2013-05-10 24 views
0

我有以下的實體類JPA。如何做一個與舊錶連接

public class ReportRequest { 

@Id 
@GeneratedValue (strategy=GenerationType.IDENTITY) 
private long id; 
private String requestorUsername; 
    ... 
} 

映射到一個表,的ReportRequest,說我有一箇舊的表,用戶,具有以下字段(id, username, fullname),其中requestorUsername在ReportRequest表映射到用戶表中的用戶名。

用請求者的全名檢索ReportRequest對象的最佳方法是什麼?我需要創建一個用戶實體對象嗎?我如何使用JPQL,原生SQL?

+1

不能完全肯定我這裏理解你。什麼是ReportRequest映射到現在?一張不同的桌子?你的示例requestorUsername中有什麼?它映射到遺留表中的用戶名字段嗎? – Casey 2013-05-10 00:18:30

+0

ReportRequest映射到ReportRequest表並且它有一個requetorUsername字段。該字段可用於與舊錶格User進行連接。 – duvo 2013-05-13 15:12:20

+1

是的,您可以將用戶表映射到用戶實體,並在實體之間創建ManyToOne或OneToOne關聯。 – 2013-05-13 18:07:13

回答

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; 

}