Как использовать @Where в Hibernate
Искал несколько часов, но я застрял на кривой обучения PlayFramework с JPA. Я создаю пример веб-сайта, где можно делать сообщения. Но эти посты могут иметь состояния:
PostDraft (опубликовать черновик, не публиковать)Сообщение опубликовано (сообщение можно опубликовать)Эти состояния хранятся в отдельной таблице. Очевидно, проект государственных постовпока не должно быть видно
Итак, у меня есть эти классы:
Класс страницы (получение информации о странице из таблицы, 1 страница может иметь несколько сообщений)Класс постов (посты могут быть как черновыми, так и опубликованными)В моем классе страницы у меня есть:
@Column(name="POSTS_REF")
@Where(clause="PostPublished")
private List<Posts> userPosts;
Но это не работает! Итак, как я могу указать предложение where, чтобы загружать только сообщения, которые находятся в опубликованном состоянии без использования JPQL ??
Спасибо!
ОБНОВЛЕНИЕ: 2011-10-11
Таблица:Сообщений с колонками: - id - title - state_ref (ссылка на таблицу идентификаторов состояний) - content
Таблица:состояния с колонками: - 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 Ответ Эмта сработал для меня в конце концов.