Как использовать @Where в Hibernate

Искали несколько часов, но я застрял в процессе обучения PlayFramework с JPA. Я создаю образец веб-сайта, на котором можно размещать сообщения . Но эти сообщения могут иметь состояния:

  • PostDraft (сообщение является черновиком, не публиковать)
  • PostPublished (сообщение может быть опубликовано)

Эти состояния хранятся в отдельной таблице. Очевидно, состояние черновика сообщения пока не должны быть видны.

Итак, у меня есть следующие классы:

  • Класс страницы (получение информации о странице из таблицы, 1 страница может иметь несколько сообщений)
  • Класс сообщений (сообщения могут быть в черновике и опубликованы)

В моем классе страницы У меня:

@Column(name="POSTS_REF")
@Where(clause="PostPublished")
private List<Posts> userPosts;

Но это не работает! Итак, как я могу указать предложение where, чтобы загружать только сообщения, которые находятся в опубликованном состоянии, без использования JPQL ??

Спасибо!

ОБНОВЛЕНИЕ: 2011-10-11

Таблица: Сообщения со столбцами: - id - title - state_ref (ссылка на ID таблицы состояний) - content

Таблица: States со столбцами: - id - statename

Итак, я хочу кое-что сказать например:

select * 
from posts inner join states on posts.state_ref = states.id
where states.statename = 'PostPublished'

ОБНОВЛЕНИЕ 2011-10-13

Это моя текущая модификация в моем классе страницы: но она тоже не работает.

/** link to the states */
@JoinColumn(name = "STATES_REF")
@OneToOne
@Where(clause = "states.statename = 'PostPublished'")
public MyState state;

ОБНОВЛЕНИЕ 2012-02-13 В конце концов, ответ Эмта у меня сработал.

14
задан Neil Stockton 19 August 2016 в 06:56
поделиться