首页 > 解决方案 > JPA,映射实体人,其中包含名称类型的类

问题描述

我有一个由名称属性组成的实体 Person

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

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

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

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

如何实现基础表包含两个附加列 first_name 和 last_name 并且内容是我从 name 属性获得的字符串的映射?

基于人员实体的表应如下所示

id|first_name|last_name 1 |约翰 | 母鹿 2 |简 | 能源部

标签: jpaormentity

解决方案


您可以使用嵌入式:

@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


推荐阅读