0

我有以下实体类

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 来做到这一点?

4

1 回答 1

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;

}
于 2013-06-04T22:15:54.220 回答