2012-05-10 10 views
3

私がDBから、利用可能なすべての -objectsを取得オブジェクトに対してNamedQueryを作成しようとすると、条件付きで子の一部を取得していますがフェッチ - 同じクエリ内のオブジェクト。例えば。クエリはすべての親オブジェクトを取得し、各親オブジェクトに対して年= 2012年の子をフェッチする必要があります。残りの子オブジェクトはフェッチしないでください。私はLEFT JOIN FETCHでarroundを再生しようとしましたが、その結果、いくつかの親オブジェクトも除外されていました。しかし、やはり、FETCH -statementに新しい。JPAは:条件付き子供オブジェクトの一部

上記のタスクを達成する方法はありますか?どんな助けでも大歓迎です。私 -objectの関連するコードは以下の通りである:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(namespace = "xxx/xxx/xxx/xxx", name = "Parent") 
@XmlRootElement(namespace = "xxx/xxx/xxx/xxx") 
public class Parent implements Serializable { 
private static final long serialVersionUID = 1L; 

/** 
*/ 
..................... 
/** 
*/ 

@Column(name = "status") 
@Basic(fetch = FetchType.EAGER) 
@XmlElement 
String status; 
/** 
*/ 
/** 
*/ 
@OneToMany(mappedBy = "parent", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY) 
@XmlElement(name = "", namespace = "") 
java.util.Set<xxx.xxx.xxx.Child> children; 

答えて

2

あなたは@Whereアノテーションを使用して欲しいものを達成することができるはず - あなたは自分の子供たちに以下のように注釈を追加することができるはずですプロパティ

@Where(clause="year=2012") 

また、この質問を参照してください。How to apply a default-restriction on Entity-Bean @OneToMany Relationships

+1

は、あなたの答えをいただき、ありがとうございます。しかし、この議論は静的な権利だろうか?それは常に適用されるという意味で?私は年2012,2011,2010などとクエリを実行することができるようにしたいと思います。それは同じことをすることは可能ですが、私は変更することができます入力パラメータでのみ可能ですか? :) – Sebastian