【发布时间】:2018-01-07 02:58:28
【问题描述】:
编辑:对于那些将来可能会经过这里的人,我想分享一些我发现的东西。尽管它不适用于这种特定 情况,但hibernate 确实有一个@Where 注释。使用此注释,您可以拥有 N 个集合。每个集合都有@Where(clause='column=value')。我不会使用@Where 解决方案,但它可能对你有用。
我是 JPA Hibernate 的新手,正在寻求帮助。我不一定知道要搜索什么,所以这里是我的问题的一个简单示例。
我需要获取一个 Set 并根据字段的值将其拆分为多个 Set。
让我们看一些简单的东西:
public class Customer{
private String name;
private String age;
private Set<Order> orders;
}
public class Order{
private int amount;
private String status;
}
目标:我想让 Hibernate 按状态将客户的订单拆分为单独的集合。目前,我使用 @POSTLOAD 注释来循环 Set 并将它们分开。我希望 Hibernate 为我做这件事,结果如下:
public class Customer{
//Irrelevant stuff from above...
private Set<Order> pendingOrders;
private Set<Order> completedOrders;
private Set<Order> canceledOrders;
}
这些集合将基于订单的状态。
- pendingOrders 是 Order.getStatus() == "PENDING"
- completedOrders 是 Order.getStatus() == "COMPLETED"
- canceledOrders 是 Order.getStatus() == "CANCELED"
表直接由类表示,并且都被视为“实体”。 (客户和订单)
如果我没有提供足够的信息,请您指点我正确搜索我正在“尝试”完成的工作。就 JPA 术语而言,我不知道要搜索什么并且真的可以使用一些帮助!
谢谢!
【问题讨论】:
-
看看鉴别器方法stackoverflow.com/questions/14327706/…。您可以有一个带有鉴别器列的简单表,该表将根据鉴别器列将数据库中的原始对象映射到不同的对象