JPA,包含 class 类型 Name 的 Map 实体 Person

JPA, Map entity Person which contains class of type Name

我有一个包含名称属性的实体 Person

@Entity
public class Person {
      // ...
      //@Transient 
       private Name name;
      // ...
}

我不想将 "name" 存储在额外的 table 中...我将名称标记为瞬态,因此它不会存储在基础数据库中。

我想要的是将属性 "name" 映射到数据库中的列 "first_name" 和 "last_name"。

例如我可以创造一个像new Person(new Name("John","Doe"));

这样的人

如何实现底层 table 包含两个附加列 first_name 和 last_name 并且内容是我从 name 属性中获取的字符串的映射?

table,基于人的实体应该是这样的

id|first_name|last_name 1 |约翰 |母鹿 2 |简|母鹿

您可以使用嵌入式:

@Embeddable
public class Name {

    private String firstName;
    private String lastName;

    // getters and setters
}

然后像这样使用它。

@Entity
public class Person {
      // ...
      private Name name;
      // ...
}

在 Hibernate 文档中阅读有关可嵌入的更多信息:https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#embeddables