java如何使用复杂查询获取带有Ebean的项目列表
我有3个模型,城镇模型,有regionId字段,地区模型,有stateId字段
城镇模式:
@Entity
@Table(name = "town")
public class Town extends Model {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "town_id_seq")
private Integer id;
@Column(name = "region_id")
private Integer regionId;
...
区域模型:
@Entity
@Table(name = "region")
public class Region extends Model {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "region_id_seq")
private Long id;
@Column(name = "state_id", nullable = false)
private Long stateId;
...
国家的模式:
@Entity
@Table(name = "state")
public class State extends Model {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "state_id_seq")
private Integer id;
...
我需要得到特定州的城镇列表。在SQL中,我会这样做:
select * from town join region on town.region_id = region.id
where region.state_id=15666
我的确弄到了两张桌子
public static List<Town> findAllInState(Integer stateId) {
return Ebean.find(Town.class).fetch("region").findList();
}
但是当我尝试添加.where().eq("region.stateId", stateId)
时,它显示BeanList size[0] hasMoreRows[false] list[]
我如何使用Ebian获得它
# 1 楼答案
这可以通过在
Town
和Region
而不是@Column
字段中添加@ManyToOne
关系来实现因此在
Town
类中删除:并加上:
在
Region
类中删除:并加上:
然后,您将能够通过以下查询找到给定州的城镇: