所以我正在制作一个spring-boot应用程序,我从外部库(通过maven导入)导入一些datamodel。我有一些模型有一个外部库类型的字段,我希望能够持久化它。类似的东西:
package com.example.module;
import external.Phone;
@Entity
public class Person{
@Id
@GeneratedValue
String id;
String name;
Phone phone;
}
问题是,是否可以存储Phone
,如果它的实现不是JPA意识的? E.g:
package external;
public class Phone{
String number;
String areaCode;
}
答案 0 :(得分:1)
在持久性方面取决于你想要做什么。
如果您希望Phone本身就是一个实体,您可以定义一个orm.xml
文件来指定其持久性(如果您的JPA提供程序使用字节码增强,您还必须小心获取更新它的Java类文件)。
如果您只是希望将其保留为嵌入式,那么请查看创建JPA AttributeConverter
并将其保留在与所有者相同的表中。您的JPA提供程序可能允许也可能不允许通过AttributeConverter将其持久保存到多个列中(DataNucleus JPA,我使用的那个,支持这种灵活性,但这是供应商扩展,可能在您的不可用)。
答案 1 :(得分:0)
我最终使用了这种方法JPA map JSON column to Java Object,因为它允许我完全控制如何持久化字段,甚至可以控制具有我想要的对象的JSON的字符串。