3

我正在尝试为Parent对象创建一个NamedQuery ,该对象从数据库中检索所有可用的Parent对象,并有条件地在同一查询中获取一些Child对象。例如,查询应该检索所有父对象并为每个父对象获取year=2012的子对象。不应获取其余的子对象。我试图用LEFT JOIN FETCH玩 arround ,但结果是一些父对象也被排除在外。但话又说回来,我对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 注释来实现您想要的 - 您应该能够将如下注释添加到您的 children 属性中

@Where(clause="year=2012")

另外,请参阅此问题:如何在 Entity-Bean @OneToMany 关系上应用默认限制

于 2012-05-10T07:49:06.603 回答