我有兩個實體Customer
和Account
。JPA原生查詢(SQL視圖)
@Entity
@Table(name="customer")
public class Customer
{
private Long id;
private String name;
private Long accountId;
private String accountType;
private String accountName;
...
}
@Entity
@Table(name="account")
public class Account
{
private Long id;
private String accountName;
private String accountType;
...
}
我有一個SQL查詢:
select
a.id as account_id,
a.account_name,
a.account_type,
d.id,
d.name
from account a,
customer d`
where d.account_id = a.id
假設在應用程序啓動
account
和customer
表在數據庫中創建。accountType
和accountName
客戶實體的字段不應該在數據庫中創建。也就是說,客戶數據庫表中將只創建id
和name
列。
問題
如何運行上面的SQL查詢,並與accountType
和accountName
性填充了SQL查詢的ACCOUNT_NAME和ACCOUNT_TYPE值返回Customer
實體。
你可以去休眠嗎? – ssedano
我真的不明白你的問題。這些「假設」是什麼?這是你想如何工作的代碼?你不想堅持Customer實體的'accountType'和'accountName'屬性? ('@ Transient'?)你想讓這些屬性成爲組合PK的一部分嗎?客戶和賬戶之間的關係是什麼?你的SQL查詢將返回這種形式的笛卡爾產品(這些實體之間沒有關聯)... –
accountType和accountName不是複合Pk,我使用id作爲主鍵。我已更新該帖子。就像你說的那樣,Customer實體的accountType和accountName屬性是@Transient。客戶實體具有對賬戶實體的引用。我想從數據庫中檢索客戶實體,該客戶實體不包含帳戶實體,但包含其在數據庫中引用的帳戶記錄的帳戶類型和帳戶名稱。如果您有更好的方式獲得這兩個屬性,請分享它。謝謝 –