我有以下实体类
public class ReportRequest {
@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)
private long id;
private String requestorUsername;
...
}
映射到表ReportRequest,并说我有一个遗留表User,其中包含以下字段(id, username, fullname)
,其中ReportRequest表中的requestorUsername映射到User表中的用户名。
使用请求者的全名检索ReportRequest
对象的最佳方法是什么?我是否必须创建用户实体对象?我如何使用JPQL,本机SQL?
答案 0 :(得分:0)
正如JB Nizet建议的那样,我只是将表映射到一个实体MyUser。请注意,您还可以将实体映射到数据库视图而不是表。
public class ReportRequest {
@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)
private long id;
@OneToOne(targetEntity=MyUser.class)
@JoinColumn(name="requestor")
private MyUser requestor;
...
}
实体类看起来像
@Entity
@Table(name="user", catalog="somecatelog", schema="myschema")
public class MyUser {
@Id
@Column(name="USERID")
private String userId;
//don't want to modify data
@Column(name="FIRST_NAME", insertable=false, updatable=false)
private String firstName;
@Column(name="LAST_NAME", insertable=false, updatable=false)
private String lastName;
}