Java 如何使用复杂查询获取带有Ebean的项目列表
我有3个模型,城镇模型,有regionId字段,地区模型,有stateId字段 城镇模式:Java 如何使用复杂查询获取带有Ebean的项目列表,java,playframework,ebean,Java,Playframework,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 = "regi
@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();
}
公共静态列表findAllInState(整型stateId){
返回Ebean.find(Town.class).fetch(“region”).findList();
}
但是当我尝试添加.where().eq(“region.stateId”,stateId)
时,它会显示BeanList size[0]hasMoreRows[false]list[]
如何使用Ebean获取它?这可以通过在
城镇
和地区
中添加@ManyToOne
关系而不是@Column
字段来实现
因此,在城镇中
类删除:
@Column(name = "state_id", nullable = false)
private Long stateId;
@Column(name = "state_id", nullable = false)
private Long stateId;
并加上:
@ManyToOne
public Region region;
@ManyToOne
public State state;
在区域中
类删除:
@Column(name = "state_id", nullable = false)
private Long stateId;
@Column(name = "state_id", nullable = false)
private Long stateId;
并加上:
@ManyToOne
public Region region;
@ManyToOne
public State state;
然后,您将能够通过以下查询找到给定州的城镇:
Ebean.find(Town.class).where().eq("region.state.id", stateId).findList();