adi*_*dis 14 hibernate jpa playframework
搜索了几个小时,但我陷入了PlayAramework与JPA的学习曲线.我正在建立一个可以发布帖子的示例网站.但这些帖子可以具有以下状态:
这些状态存储在单独的表中.显然,国家职位草案尚不可见.
所以我有这些课程:
在我的页面课程中,我有:
@Column(name="POSTS_REF")
@Where(clause="PostPublished")
private List<Posts> userPosts;
Run Code Online (Sandbox Code Playgroud)
但这不起作用!那么,我如何指定where子句,只加载处于已发布状态的帖子而不使用JPQL?
谢谢!
更新时间:2011-10-11
表:具有列的帖子: - id - title - state_ref(对States表的ID的引用) - 内容
表:美国与列: - ID - Statename的
所以我想说的是:
select *
from posts inner join states on posts.state_ref = states.id
where states.statename = 'PostPublished'
Run Code Online (Sandbox Code Playgroud)
更新2011-10-13
这是我目前的修改,在我的页面类中:但它也不起作用.
/** link to the states */
@JoinColumn(name = "STATES_REF")
@OneToOne
@Where(clause = "states.statename = 'PostPublished'")
public MyState state;
Run Code Online (Sandbox Code Playgroud)
更新2012-02-13 Emt的回答毕竟对我有用.
emt*_*t14 17
尝试类似的东西:
@Column(name="POSTS_REF")
@Where(clause="state='PostPublished'")
private List<Posts> userPosts;
Run Code Online (Sandbox Code Playgroud)
要么
@Column(name="POSTS_REF")
@Where(clause="PostPublished=true")
private List<Posts> userPosts;
Run Code Online (Sandbox Code Playgroud)
取决于您Post
实体的状态字段类型.
where 子句必须是一个完整的条件——就像这样。假设 state 是 post 上的一个属性。
@Column(name="POSTS_REF")
@Where(clause="state = 'PostPublished'")
private List<Posts> userPosts;
Run Code Online (Sandbox Code Playgroud)
编辑
基于数据模型 - 以下应该工作。我不建议使用它。不要映射帖子集合 - 只需从 POsts 类引用页面,向您的 DAO 添加一个方法以使用 HQL 或标准查询检索页面的已发布帖子。
@Column(name="POSTS_REF")
@Where(clause="exists (select id from states where state_ref = states.id and states.statename = 'PostPublished')")
private List<Posts> userPosts;
Run Code Online (Sandbox Code Playgroud)