Play Framework使用Query中的连接表(ExpressionList)

时间:2014-01-21 21:49:25

标签: java playframework entities ebean playframework-2.2

所以我有两个表:Users和AlertHistory。

我已将AlertHistory加入用户,如果我这样做:

 List<User> users = new Model.Finder(Integer.class, User.class).setMaxRows(9).findList();
 List<AlertHistory> ahc = users.get(3).getAlertHistoryCollection();

我将获得用户列表,每个用户都将拥有一组AlertHistory对象。

我想对Finder做什么,是返回AlertHistory为NOT NULL的用户列表。我试过各种版本:

new Model.Finder(Integer.class, User.class).where().isNotNull("alertHistoryCollection").setMaxRows(9).findList();

但无济于事。

1 个答案:

答案 0 :(得分:0)

这里的问题是我定义的关系不正确。

User.java

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user")
private List<AlertHistory> alertHistoryList = new ArrayList<>();

AlertHistory.java

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")

一旦我正确地对关系进行了注释和输入,它就会按预期开始工作,这样如果User已关联AlertHistory,它们将填充,如果没有,则收集将是空。 .isNotNull()现在按预期工作。