[英]Reading a value from Entity B when reading Entity A (left join on non PK column) - JPA 2.0
[英]JPA - How to save entity with value from non PK column in DB
假設我有一個簡單的實體調用 Account 和 User
帳戶
@Id
@Column(name="ACCOUNT_ID")
private Long accountId;
@Column(name="ACCOUNT_NO")
private String accountNo;
用戶
@Id
@Column(name="USER_ID")
private Long userId;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ACCOUNT_NO")
private Account account;
我有一個保存操作
Account acc = accountRepo.findByAccountId(1);
acc.setAccountNo("TestAccNo");
User user = new User();
user.setAccount(acc);
userRepo.save(user);
用戶實體可以成功保存,數據庫結果如下:
User
--------------------------
ID | ACCOUNT_NO
--------------------------
1 | 1
我知道映射應該始終使用 PK,它是 User 實體中的 ACCOUNT_ID,但由於某種原因,User 表只有 ACCOUNT_NO,所以我希望 ACCOUNT_NO 存儲“TestAccNo”而不是“1”(Account'S PK)。
我將用戶實體修改為跟隨,它能夠捕獲 ACCOUNT_NO,我保留 @ManyToOne 映射並創建另一個列映射。
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ACCOUNT_NO", insertable = false, updatable = false)
private Account account;
@Column(name="ACCOUNT_NO")
private String accountNo;
---------------------------------------
user.setAccountNo(acc.getAccountNo());
userRepo.save(user);
這似乎不是一個正確的方法,有沒有人有更好的解決方案?
謝謝你。
您可以在@JoinColumn
使用referencedColumnName
來指定要存儲在連接列中的列的值
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ACCOUNT_NO", referencedColumnName="ACCOUNT_NO")
private Account account;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.