JPA:有条件地获取一些子对象

时间:2012-05-10 07:16:02

标签: java hibernate jpa jpql

我正在尝试为 Parent 对象创建一个 NamedQuery ,该对象从数据库中检索所有可用的 Parent - 对象,并有条件地提取一些在同一查询中的 Child -objects。例如。查询应该检索所有父对象并获取每个父对象具有 year = 2012 的子对象。不应提取其余的子对象。我尝试使用 LEFT JOIN FETCH 播放arround,但结果是某些父对象也被排除在外。但话说回来,我是 FETCH -statement的新手。

有没有办法实现上述任务?任何帮助深表感谢。我的 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;

1 个答案:

答案 0 :(得分:2)

你应该能够使用@Where注释达到你想要的效果 - 你应该只需要在你的子属性中添加如下注释

@Where(clause="year=2012")

另请参阅此问题:How to apply a default-restriction on Entity-Bean @OneToMany Relationships