2014-01-21 4 views
0

Итак, у меня есть две таблицы: пользователи и AlertHistory.Play Framework use Join Table в запросе (ExpressionList)

Я присоединился к 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(); 

но безрезультатно.

+0

'isNotNull()' отлично работает на моей БД, поэтому не может воспроизвести это. Позаботьтесь о добавлении более подробной информации? – t0mppa

ответ

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 ' s, они будут заполнены, а если нет, коллекция будет пуста. .isNotNull() теперь работает должным образом.

 Смежные вопросы

  • Нет связанных вопросов^_^