hibernatejpaplayframework

How to use @Where in Hibernate


Searched for a few hours, but I'm stuck in a my learning curve for PlayFramework with JPA. I'm building a sample website where posts can be made. But these posts can have the states:

These states are stored in a seperate table. Obviously, the draft state posts should not be visible yet.

So I have these classes:

In my page class I have:

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

But this is not working! So, how can I specifify a where clause, to load only the posts that are in published state without using JPQL??

Thanks!

UPDATE: 2011-10-11

Table: Posts with columns: - id - title - state_ref (reference to the ID of States table) - content

Table: States with columns: - id - statename

So I want to say something like:

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

UPDATE 2011-10-13

This is my current modification, in my page class: but it does not work either.

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

UPDATE 2012-02-13 Emt's answer worked for me after all.


Solution

  • Try something like:

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

    or

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

    depending on the status field type on your Post entity.