Cómo usar @Where in Hibernate

He buscado durante unas horas, pero estoy atrapado en mi curva de aprendizaje para PlayFramework con JPA. Estoy construyendo un sitio web de muestra donde se pueden hacer publicaciones. Pero estas publicaciones pueden tener los estados:

PostDraft (la publicación es un borrador, no publicar)PostPublished (la publicación se puede publicar)

Estos estados se almacenan en una tabla separada. Obviamente, el borrador del estado publicano debe estar visible todavía.

Así que tengo estas clases:

Page class (obteniendo la información de la página de la tabla, 1 página puede tener múltiples publicaciones)Posts class (las publicaciones pueden estar en borrador y publicadas)

En mi clase de página tengo:

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

¡Pero esto no está funcionando! Entonces, ¿cómo puedo especificar una cláusula where, para cargar solo las publicaciones que están en estado publicado sin usar JPQL ??

¡Gracias

ACTUALIZACIÓN: 2011-10-11

Mesa: Publicaciones con columnas: - id - título - state_ref (referencia a la tabla ID de Estados) - content

Mesa: Estados con columnas: - id - nombre del estado

Así que quiero decir algo como:

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

UPDATE 2011-10-13

Esta es mi modificación actual, en mi clase de página: pero tampoco funciona.

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

UPDATE 2012-02-13 La respuesta de Emt funcionó para mí después de todo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta