在Hibernate中如何使用@Where

搜索了几个小时,但我陷入了使用JPA的PlayFramework学习的困境。我正在建立一个示例网站,可以在其中发布帖子。但是这些帖子可以具有以下状态:

  • PostDraft(帖子是草稿,不发布)
  • PostPublished(帖子可以发布)

这些状态存储在单独的表中。显然,州立草稿

所以我有这些课:

  • 页面类(从表中获取页面信息,一个页面可以有多个帖子)
  • 帖子类(帖子可以在草稿中发布)

在我的网页课程中,我有:

@Column(name="POSTS_REF")

@Where(clause="PostPublished")

private List<Posts> userPosts;

但这是行不通的!因此,如何指定where子句,以仅加载处于发布状态的帖子而无需使用JPQL?

谢谢!

表格:带有栏的 帖子 :-id-标题-state_ref(引用国家ID表)-内容

表: 美国 与列: - ID - Statename的

所以我想说些类似的话:

select * 

from posts inner join states on posts.state_ref = states.id

where states.statename = 'PostPublished'

这是我当前在页面类中所做的修改:但是它也不起作用。

/** link to the states */

@JoinColumn(name = "STATES_REF")

@OneToOne

@Where(clause = "states.statename = 'PostPublished'")

public MyState state;

Emt的回答毕竟对我有用。

回答:

尝试类似的方法:

@Column(name="POSTS_REF")

@Where(clause="state='PostPublished'")

private List<Posts> userPosts;

要么

@Column(name="POSTS_REF")

@Where(clause="PostPublished=true")

private List<Posts> userPosts;

取决于您Post实体的状态字段类型。

以上是 在Hibernate中如何使用@Where 的全部内容, 来源链接: utcz.com/qa/425338.html

回到顶部