簡體   English   中英

JPA實體映射來自不同的持久單元

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM