3

DB から使用可能なすべてのParentオブジェクトを取得し、同じクエリでChildオブジェクトの一部を条件付きでフェッチするParentオブジェクトのNamedQueryを作成しようとしています。たとえば、クエリはすべての親オブジェクトを取得し、各親オブジェクトのyear=2012を持つ子をフェッチする必要があります。残りの子オブジェクトはフェッチしないでください。私はLEFT JOIN FETCHで遊んでみましたが、その結果、一部の親オブジェクトも除外されました。しかし、繰り返しになりますが、私はFETCHステートメントを初めて使用します。

上記のタスクを達成する方法はありますか?どんな助けでも大歓迎です。私のParentオブジェクトの関連コードを以下に示します。

@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;
4

1 に答える 1

2

@Where アノテーションを使用して、目的を達成できるはずです。以下のように、子プロパティにアノテーションを追加するだけで済みます。

@Where(clause="year=2012")

また、この質問を参照してください: Entity-Bean @OneToMany Relationships にデフォルト制限を適用する方法

于 2012-05-10T07:49:06.603 に答える