首页 > 解决方案 > 使用 JPA 持久化一个时间集合

问题描述

我需要使用 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;
}

orders我需要使用 JPA来坚持这个领域,但我不知道该怎么做。

过去,当我问如何处理时间属性时,有人建议我看一下DaoFusion 框架,其中包括Erwin Vervaet的双时间模式,但据我了解,它只能用于映射双时间属性(不是集合),因为映射是 OneToMany,所以第二面必须是单个值。

DaoFusion 的双时态模式部分显示的示例确实显示了一个与我类似的 Customer 和 Orders 示例,但据我了解,一次只能有一个订单,而不是订单集合。

我是否正确理解了该代码?

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

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

标签: javajpatemporaltemporal-database

解决方案


推荐阅读