javax.persistence@Column映射两个不同表的两列
我试图使用@Entity、@Table、@SecondaryTables和@Column注释从3个表映射一个实体,如下面的示例所示 各表如下: 1.雇员(主要) 2.员工详细信息 3.工作描述javax.persistence@Column映射两个不同表的两列,java,mysql,jpa,javax,Java,Mysql,Jpa,Javax,我试图使用@Entity、@Table、@SecondaryTables和@Column注释从3个表映射一个实体,如下面的示例所示 各表如下: 1.雇员(主要) 2.员工详细信息 3.工作描述 @Entity @Table(name="EMPLOYEE") @SecondaryTables({ @SecondaryTable(name="EMPLOYEE_DETAIL", pkJoinColumns = @PrimaryKeyJoinCol
@Entity
@Table(name="EMPLOYEE")
@SecondaryTables({
@SecondaryTable(name="EMPLOYEE_DETAIL",
pkJoinColumns = @PrimaryKeyJoinColumn(name="EMPLOYEE_ID")),
@SecondaryTable(name="JOB_DESCRIPTION",
pkJoinColumns = @PrimaryKeyJoinColumn(name="JD_ID"))
})
public class Employee {
@Id
@Column(name = "ID", table= "EMPLOYEE")
private int id;
@Column(name = "FIRST_NAME", table = "EMPLOYEE")
private String firstname;
@Column(name = "LAST_NAME", table = "EMPLOYEE")
private String lastname;
@Column(name = "BANK_ACCOUNT_NO", table = "EMPLOYEE_DETAIL")
private String bankacctnumber;
@Column(name = "JOB_SUMMARY", table = "JOB_DESCRIPTION")
private String jobsummary;
@Column(name = " ??? ", table = " ?? ")
private String uniqueid;
//getters and setters for above fields
...
}
我的问题是,如果我想通过连接创建字段“uniqueid”
表“员工”中的“ID”列和表“职务说明”中的“职务代码”列
该实体与以下sql查询字符串相对应(为了清晰起见,我使用了字符串生成器):-
字段“uniqueid”的列映射应该如何进行?这可能吗?不可能,因为JPA正在使用映射列进行读写。因此,无法连接列 但是您可以在类中编写一个简单的方法来连接字段
另一种可能是使用SQL语句的视图,但由于该视图包含多个表的字段,因此您现在只能进行读写操作。谢谢Simon!我将尝试添加一个方法来连接字段。
StringBuilder sql = new StringBuilder();
sql.append("SELECT");
sql.append(" e.FIRST_NAME AS firstname,");
sql.append(" e.LAST_NAME AS lastname,");
sql.append(" d.BANK_ACCT_NUMBER AS bankacctnumber,");
sql.append(" j.JOB_SUMMARY AS jobsummary,");
sql.append(" CONCAT(e.ID,SUBSTR(j.JOB_CODE,3,8)) AS uniqueid");
sql.append(" FROM employee e");
sql.append(" LEFT JOIN employee_detail d ON d.EMPLOYEE_ID = e.ID");
sql.append(" LEFT JOIN job_description j ON j.JD_ID = e.JD_ID ");
sql.append(" WHERE e.ID = 1 ");