外部库数据模型的JPA持久性

时间:2015-11-29 00:26:54

标签: java jpa spring-boot tags

所以我正在制作一个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;
}

2 个答案:

答案 0 :(得分:1)

在持久性方面取决于你想要做什么。

如果您希望Phone本身就是一个实体,您可以定义一个orm.xml文件来指定其持久性(如果您的JPA提供程序使用字节码增强,您还必须小心获取更新它的Java类文件)。

如果您只是希望将其保留为嵌入式,那么请查看创建JPA AttributeConverter并将其保留在与所有者相同的表中。您的JPA提供程序可能允许也可能不允许通过AttributeConverter将其持久保存到多个列中(DataNucleus JPA,我使用的那个,支持这种灵活性,但这是供应商扩展,可能在您的不可用)。

答案 1 :(得分:0)

我最终使用了这种方法JPA map JSON column to Java Object,因为它允许我完全控制如何持久化字段,甚至可以控制具有我想要的对象的JSON的字符串。