Java 如果类型实例不可变,如何将两列映射到实体类型?
我想将一个实体类Java 如果类型实例不可变,如何将两列映射到实体类型?,java,jpa,orm,Java,Jpa,Orm,我想将一个实体类讲座映射到一个表讲座,其中两列-from和until表示时间戳。我想将这些时间戳映射到的startInclusive和endInclusive 为此,我考虑使用@Embeddeble或自定义对象映射器,但我不确定这是否有效,因为Interval在实例化后是不可变的 有人能为这提供一个最佳实践吗?这是一个库应用程序吗?同一个讲座的from和till可以不同?from和till是讲座的属性,但在重新安排讲座时可能会改变。许多讲座可能从开始到结束都有相同的内容,但它们并不共享状态。我不
讲座
映射到一个表讲座
,其中两列-from
和until
表示时间戳。我想将这些时间戳映射到
的startInclusive
和endInclusive
为此,我考虑使用@Embeddeble或自定义对象映射器,但我不确定这是否有效,因为Interval
在实例化后是不可变的
有人能为这提供一个最佳实践吗?这是一个库应用程序吗?同一个
讲座
的from
和till
可以不同?from和till是讲座的属性,但在重新安排讲座时可能会改变。许多讲座可能从开始到结束都有相同的内容,但它们并不共享状态。我不确定我是否理解你。。。虽然Interval
的实例是不可变的,但是您仍然可以执行MyArchitecture.setFrom(instanceOfInterval)
和MyArchitecture.setUntil(instanceOfInterval)
Interval不能是可嵌入的,因为它不能满足可嵌入对象的要求(请参阅JPA 2.1规范第2.5节-是否有公共或受保护的无参数构造函数?这是最终的!)您不能使用转换器,因为它从1列映射到对象(您希望2列映射到1个对象)但是,您可以创建一个getter/setter,将这两个持久性属性转换为间隔
@NikosParaskevopoulos谢谢,我自己排除了前两种方法。您建议使用getter/setter,这意味着使用AccessType.PROPERTY
,对吗?很公平,但我希望能找到一些解决方案iseAccessType.FIELD
,这是我最喜欢的。但我发现由于上述原因,这是不可能的,再次感谢您指出这些原因。