JPA。如何与遗留表连接

时间:2013-05-10 00:09:33

标签: jpa

我有以下实体类

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?

1 个答案:

答案 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;

}