使用JPA保留时态集合

时间:2019-04-25 17:56:07

标签: java jpa temporal temporal-database

我需要坚持使用JPA随时间变化的集合

假设我一次Customer使得多个 Orders,我将需要以下操作:

Customer c = new Customer();
Set<Order> o = new Set<Order>();
Instant validFrom = now(); // something similar
Instant validTo = infinity(); // something similar
c.setOrders(validFrom, validTo, o);

具有类似

的结构
class TemporalSet<V>  {
...
    Instant validFrom;
    Instant validTo;
    Set<V> value;
}

且客户为

class Customer {

    Collection<TemporalSet<Order>> orders;
}

我需要使用JPA保留orders字段,而且我不知道该怎么做。

过去,当我问到如何处理时间属性时,有人建议我看看DaoFusion framework,其中包括Bitemporal Pattern by Erwin Vervaet,但到目前为止据我了解,由于映射是OneToMany,因此只能将其用于映射时空属性(而不是集合),因此第二面必须是单个值。

DaoFusion的Bitemporal模式部分中显示的示例确实显示了一个与Customer和Orders相似的示例,但据我所知,一次只能拥有一个订单,而不是一组订单。

我正确理解了该代码吗?

如何使用JPA处理临时集合? (我只需要有效时间,就不需要具有记录时间的双时态解决方案)

编辑:问题已更新,添加了Customer和TemporalSet字段

0 个答案:

没有答案