Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果类型实例不可变,如何将两列映射到实体类型?_Java_Jpa_Orm - Fatal编程技术网

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
,对吗?很公平,但我希望能找到一些解决方案ise
AccessType.FIELD
,这是我最喜欢的。但我发现由于上述原因,这是不可能的,再次感谢您指出这些原因。