[英]JPA entity mapping from different persistent unit
是否有任何特定的配置將實體從不同的持久性單元放入當前映射?
例如:
@RooJpaActiveRecord(persistenceUnit = "persistenceUnit_central")
public class UserGroups{
//users come from `persistenceUnit_client`
//how to work this out?
//can mappedBy and targetEntity works the same way
//as they are in the same persistence unit?
@OneToMany
private List<User> users;
}
提前致謝。
我認為你不能直截了當地做到這一點。 持久性單位意味着明顯分開; 他們有不同的實體經理,所以他們很可能(這通常是因為不同的數據庫或模式)。
您仍然可以定義相同的實體類存在於一些持久性單元,在persistence.xml中,但是,正如我所說,將每個經理單獨處理。 這意味着你不能這樣做:
UserGroups ug = em1.find(UserGroups.class, ...); // entity manager 1
User u = em2.find(User.class, ...); // entity manager 2
// exception will be thrown on commit
// - from the point of view of em1, "u" is detached
ug.getUsers().add(u);
我不確定是否會調用em1.merge(u)
來解決問題 - 我還沒有遇到過這樣的情況。 但是你肯定可以創建一個User
副本並將其合並到所需的持久化上下文中。
媽媽是對的。 我對這個問題的回答只是為了解決這個問題。
首先,我們到目前為止我們不能在實體B中保持實體A的實例,而A和B來自不同的持久性單元。 使其正常工作的一種安全方法是使實體A的實例變為@Transient,然后永遠不會進行更改以使該實例與數據庫綁定。 但是,手動設置實體(setter和getter)之間的關系會有點痛苦,這就成了一個懸而未決的問題。
再次感謝Mada。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.