编辑:对于未来可能经过这里的人,我想分享一些我发现的东西。虽然它不适用于这种情况,但hibernate确实有一个@Where注释。有了这个注解,你可以有N个集合。每个集合都有@Where(clause ='column = value')。我不会使用@Where解决方案,但它可能适合您。JPA(休眠)按字段映射子对象
我是JPA Hibernate的新成员(ish),希望得到一些帮助。我不一定知道要搜索什么,所以这里是我的问题的一个简单例子。
我需要一个Set并根据字段的值将它分成多个Set。
让我们看一下简单的东西:
public class Customer{
private String name;
private String age;
private Set<Order> orders;
}
public class Order{
private int amount;
private String status;
}
目标:我想有休眠分裂我的客户的订单通过他们的身份进入单独设置。目前我使用@POSTLOAD注释来遍历Set并将它们分开。我宁愿休眠做到这一点对我产生这样的:
public class Customer{
//Irrelevant stuff from above...
private Set<Order> pendingOrders;
private Set<Order> completedOrders;
private Set<Order> canceledOrders;
}
这些集合将基于关闭订单的状态。
- pendingOrders是其中Order.getStatus()其中Order.getStatus()== “已完成”
- canceledOrders == “待定”
- completedOrders是被其中Order.getStatus()==“取消“
这些表直接由类表示,并且都被认为是‘实体’。 (客户和订单)
如果我没有提供足够的信息,可否请您指出我正在“尝试”完成什么的正确搜索。在JPA术语方面,我不知道要搜索什么内容,并且可以真正使用一些帮助!
谢谢!
添加特定的列有一个看看discrimator办法https://开头计算器。com/questions/14327706/spring-data-jpahibernate-how-do-i-retrieve-a-concrete-entity-using-only-a-fie。你可以有一个带有鉴别器列的简单表格,根据鉴别器列 – kimy82