Spring boot SpringBootJPA,如果我有多个具有相同列名的表,我可以把它们放在同一个实体类中吗?
我在自定义SQL语句中使用as子句,在实体类中使用as子句中的名称。使用相同列名的多个表的最佳方式是什么。单独的实体类?您可以有一个抽象类,在这个抽象类中,您将定义所有用列名注释的公共字段,并用 然后,对于共享相同列名称的每个不同表,创建一个扩展抽象类的新类,并用表名对其进行注释 这样,您就不必重复它们共有的列的定义Spring boot SpringBootJPA,如果我有多个具有相同列名的表,我可以把它们放在同一个实体类中吗?,spring-boot,spring-data-jpa,multiple-columns,Spring Boot,Spring Data Jpa,Multiple Columns,我在自定义SQL语句中使用as子句,在实体类中使用as子句中的名称。使用相同列名的多个表的最佳方式是什么。单独的实体类?您可以有一个抽象类,在这个抽象类中,您将定义所有用列名注释的公共字段,并用 然后,对于共享相同列名称的每个不同表,创建一个扩展抽象类的新类,并用表名对其进行注释 这样,您就不必重复它们共有的列的定义 @MappedSuperclass 抽象类人{ //公共列 @身份证 @列(name=“ID”) 私人长id; @列(name=“AGE”) 私人整数年龄; //getter,se
@MappedSuperclass
抽象类人{
//公共列
@身份证
@列(name=“ID”)
私人长id;
@列(name=“AGE”)
私人整数年龄;
//getter,setter,hashCode,equals。。。
}
@实体
类雇员扩展个人{
//此实体将包括“Person”中的“ID”和“AGE”列
@列(name=“SALARY”)
私人薪酬;
//getter,setter,hashCode,equals。。。
}
@实体
班级学生延伸人{
//此实体将包括“Person”中的“ID”和“AGE”列
@列(name=“FIELD”)
私有字符串字段;
//getter,setter,hashCode,equals。。。
}
单实体多表注释
javax.persistence.*
库有一个@SecondaryTable
注释,可应用于一个实体,该实体可用于将单个实体映射到共享类似列的多个表。但是,您需要在应用于次表的所有成员变量上方包含一个@列注释。下面是一个例子
示例实体
在上面的示例中,按照惯例,第一个表(经销商)已应用于所有不带注释的列。但是,您确实需要在所有应用程序变量中包含table=“
。欢迎使用堆栈溢出!您需要提供一个可复制的示例以获得支持。如果没有更多细节,任何人都很难帮助您。底层的Spring数据JPA实现是Hibernate,它允许您使用类型级别@MappedSuperclass
注释标记的公共字段定义一个抽象类。然后,允许在目标@Entity
表上扩展它
@Entity
@Table(name = "dealers")
@SecondaryTable(name = "dealers_tmp")
public class Dealer {
@Id
@Column(name = "id", table="dealers_tmp")
private long id;
@Column(name = "account", table="dealers_tmp")
private String account;
@Column(name = "name", table="dealers_tmp")
private String name;
}