是否可以在不获取父关联的情况下保存关联的@ManyToOne端。我需要从eventQueue构建一个订单处理系统。两种类型的事件将是Order和OrderStatus,并且它们是从不同系统发送的,它们将随机到达。如果我知道orderId,是否可以保存OrderStatus,而不添加Order对象?
当前,我正在执行的操作是将OrderStatus推回到延迟的重试队列(如果Order事件尚未到达),从而延迟了订单状态的持久性。但是,这导致了一个非常健谈的处理系统。
@Entity
public class Order{
@Id
private String orderId;
@OneToMany(mappedBy = "order")
@org.hibernate.annotations.ForeignKey( name = "none" )
private Set<OrderStatus> statuses = new HashSet<>();
}
@Entity
public class OrderStatus{
@ManyToOne
@JoinColumn(name = "orderId")
@org.hibernate.annotations.ForeignKey( name = "none" )
private Order order;
}
我希望发生的事情是,如果OrderStatus到达,我将在事件中获取orderId并保留OrderStatus。但是,Order事件本身将在以后的某个时间出现。但是我想保持关联的完整性,这样当我出于报表目的而运行查询时,可以通过执行诸如OrderRepository.findOrderById(orderId)
的存储库调用来获取Order中的所有OrderStatus。