2012-02-10 8 views
0

私は具体的な問題があります私は答えが見つからないようです。私は現在、Hibernate JPAを使用してJava Spring MVC環境で作業しています。この状況でJPAでフィルタリングされた子を持つオブジェクトを取得する方法

は、簡略化され、私は階層を以下していると言うことができる:

Form entity with 
@OneToMany 
List<Page> pages; 

Page entity with 
@OneToMany 
List<Question> questions; 

Question entity with 
String status; 

これらの質問のいくつかはPRODUCTIONまたはARCHIVEDのいずれかのステータスを持ちます。十分に簡単ですね。

ここでは、JPAクエリを作成して、Formオブジェクトを取得することができますが、PRODUCTというステータスを持つQuestionオブジェクトのみを含むようにしたいとします。

質問を実行すると、質問のあるページを含むフォームオブジェクトが作成されます。すべての質問は生産中の質問であり、アーカイブされた質問はありません。

これを行うにはどうすればいいですか?

EDIT:上の例で誤って@OneToMany関係を設定しました。

答えて

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(); 
    } 
関連する問題