如何使用唯一的父ID保存@ManyToOne

时间:2019-07-12 15:24:42

标签: hibernate jpa

是否可以在不获取父关联的情况下保存关联的@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。

0 个答案:

没有答案