【发布时间】:2020-09-11 01:43:37
【问题描述】:
我有一个名为“Order”的父对象,它有许多名为“OrderLines”的子对象。
@Entity
@Table(name = "ORDER")
class Order {
@Id
@Column(name = "order_number")
String orderId;
@Column(name = "location_id")
String locationId;
}
@Entity
@Table(name = "ORDER_LINES")
public class FulfilmentOrderLines {
@ManyToOne(optional = false)
@Id
@JoinColumn(name = "order_number")
private Order orderNumber;
@Id
@Column(name = "order_line_number", nullable = false)
private String orderLineNumber;
@Column(name = "status")
private int status;
}
我必须从特定 locationId 获取所有订单,该 locationId 至少有一个“OrderLine”,其状态低于某个值(比如 1000,表示这些订单处于“OPEN”状态)。
我可以先获取某个位置的所有订单,然后根据所需的状态标准对其进行过滤。但这意味着我必须获取该位置的所有订单,甚至是已关闭的订单,这可能对性能不利。
有没有一种方法可以使用 Spring Data JPA 或 Criteria API 直接从数据库中获取所需的对象?
我使用 SQL Server 作为数据库。
【问题讨论】:
-
为什么不创建一个包含所需信息的 ORDER_DATAILS 表并对其进行映射。
-
您是在谈论创建另一个表吗?当这肯定是多对一关系时,我们为什么要这样做?
标签: java sql-server spring-boot spring-data-jpa criteria-api