首页 > 解决方案 > Spring Boot JPA, if i have multiple tables with same column name can i put in same entity class?

问题描述

i am using as clause in my custom SQL statement and in entity class i'm using name from as clause. what is the best way to have multiple tables with same column names. separate entity classes?

标签: spring-bootspring-data-jpamultiple-columns

解决方案


您可以有一个抽象类,您将在其中定义使用列名称注释的所有公共字段,并使用MappedSuperclass对其进行注释。

然后,对于每个共享相同列名的不同表,您创建一个扩展抽象类的新类,并用您的表名对其进行注释。

这样您就不必重复它们共有的列的定义。

@MappedSuperclass
abstract class Person {
    // Common columns

    @Id
    @Column(name = "ID")
    private Long id;

    @Column(name = "AGE")
    private Integer age;

    // getters, setters, hashCode, equals...
}

@Entity
class Employee extends Person {
    // This entity will include 'ID' and 'AGE' columns from 'Person'

    @Column(name = "SALARY")
    private BigDecimal salary;

    // getters, setters, hashCode, equals...
}

@Entity
class Student extends Person {
    // This entity will include 'ID' and 'AGE' columns from 'Person'

    @Column(name = "FIELD")
    private String field;

    // getters, setters, hashCode, equals...
}

推荐阅读