如何对Entity-Bean @OneToMany关系应用默认限制
我有两个实体模型,Customer和Order。 每个客户可能有数千个订单。 我在这两个实体之间有一个OneToMany和ManyToOne关系。
如何将此关系列表仅限制为前10个订单?
是否可以在@OneToMany上应用’WHERE’条件作为属性?
喜欢:
@OneToMany("Where Order.orderNo > 100")
我的问题是当实体管理器创建的对象所有订单都在内存中创建时。 延迟加载无法解决我的考虑,因为我需要在默认构造中获得前10个订单。
我的意思是,是否可以在@OneToMany上应用’WHERE’条件作为属性?
不是标准的JPA。 但是一些提供商对此有扩展。 例如,Hibernate确实有@Where
注释:
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) @Where(clause="1=1") public Set getTickets() { return tickets; }
参考
- Hibernate Annotations参考指南
- 2.4.6。 集合相关的注释
JPA不支持这一点。 但是在EclipseLink中,您可以使用Expression来过滤关系。
请参阅http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria
- 如何对Java EE代码进行unit testing?
- Glassfish v3 / JNDI入门无法找到问题!
- 要求在REQUIRES_NEW内的REQUIRES_NEW内……等等
- 了解EJB3 / JPA容器级事务和隔离级别
- EJB和JPA如何相关?
- 在Java EE6中在类级别声明@Resource和@EJB
- 如何避免使用collection fetch指定的警告“firstResult / maxResults; 在内存中应用!“在使用Hibernate时?
- 在没有注释的情况下将Hibernate迁移到JPA
- 在@Table(name =“tableName”)中 – 使“tableName”成为JPA中的变量