2011-05-02 56 views
2

我有这样的在我的父类(时隙)的@OneToMany关系的EJB:使用注释在JPA中,我可以使用where子句限制子记录吗?

@OneToMany(mappedBy = "rsTimeslots") 
private List<RsEvents> rsEventsList; 

我也有一个函数来获取rsEventList:

public void setRsEventsList(List<RsEvents> rsEventsList) { 
    this.rsEventsList = rsEventsList; 
} 

这是生成的所有汽车至今。在我的视图层代码中,我可以获得一个时间段对象,并执行类似timeslot.getRsEventList()的操作,并获取此时间段的所有子项。现在我需要根据标准来限制该列表。例如,我只想要这个时间段的子项的状态为1的事件。有没有一种方法可以用注释做到这一点?

+0

如果有人有一个更新的回答这个职位请不要张贴。谢谢 – 2016-08-16 09:12:30

回答

1

不在JPA中。

通常情况下,您将使用JPQL或标准API为此执行查询。一些JPA提供者确实提供了限制关系的方法,但是我认为你最好用查询,或者在你的类上提供一个get/filter方法来访问列表并过滤它(即getStatus1Events()) 。

对于具有在映射标准的看到的EclipseLink例如, http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria

+0

Arg。我以前很怕那个。感谢您及时的回复! – Rob 2011-05-02 14:07:52

+0

在实体bean中我可以修改get来删除对象吗?这是一件坏事吗? '公开列表 getRsEventsList(){ //删除任何无状态= 1的事件 列表 eventList = new ArrayList ();对于(RsEvents事件:rsEventsList){ if(event.getStatus()==(long)1){ eventList.add(event); } } return eventList; }' – Rob 2011-05-02 14:23:53

+1

已接受的答案是2011年5月。2014年8月的JPA 2.1是否仍然如此? – devdanke 2014-08-13 23:13:30

相关问题