我有一个特定的问题,我似乎无法找到答案。我目前正在使用Hibernate JPA在Java Spring MVC环境中工作。
在这种情况下,简化,你可以说我有以下层次结构:
Form entity with
@OneToMany
List<Page> pages;
Page entity with
@OneToMany
List<Question> questions;
Question entity with
String status;
其中一些问题的状态为 PRODUCTION 或 ARCHIVED 。很简单,对吧?
现在,我想要做的是:我想创建一个JPA查询,它允许我检索Form对象,但只包含那些状态为 PRODUCTION 的Question对象。
因此,当我执行查询时,我有一个Form对象,其中包含有问题的页面。所有问题都是生产中的问题,没有存档的问题。
我将如何做到这一点?
编辑:我在上面的例子中错误地设置了@OneToMany关系,修复了。答案 0 :(得分:0)
准备问题模型后,您可以添加:
@Column(nullable=false)
private String status;
然后你的实体
Form entity with
@OneToMany
List<Page> pages;
Page entity with
@OneToMany
List<Question> questions = new ArrayList<Question>();
Question entity with
@OneToMany
String status;
和jpa;
@Override
public List<Form> getFormsByStatus(String status) {
Query q = em.createQuery("SELECT f FROM Form f where f.status = ?1")
.setParameter(1,status);
return q.getResultList();
}
答案 1 :(得分:0)
使用Hibernate,您可以在关联中使用@Where
。
这里的主题很少写:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-collection