如何对Entity-Bean @OneToMany关系应用默认限制

Nav*_*Nav 3 java orm jpa one-to-many ejb-3.0

我有两个实体模型,Customer和Order.每个客户可能有数千个订单.我在这两个实体之间有一个OneToMany和ManyToOne关系.

如何将此关系列表仅限制为前10个订单?

是否可以在@OneToMany上应用'WHERE'条件作为属性?

喜欢:

@OneToMany("Where Order.orderNo > 100")
Run Code Online (Sandbox Code Playgroud)

我的问题是当实体管理器创建的对象所有订单都在内存中创建时. 延迟加载无法解决我的问题,因为我需要在默认构造中获得前10个订单.

Pas*_*ent 5

我的意思是,是否可以在@OneToMany上应用'WHERE'条件作为属性?

不是标准的JPA.但是一些提供商对此有扩展.例如,Hibernate确实有一个@Where注释:

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@Where(clause="1=1")
public Set<Ticket> getTickets() {
    return tickets;
}
Run Code Online (Sandbox Code Playgroud)

参考