[英]java.lang.IllegalStateException: Multiple representations of the same entity with @ManyToMany 3 entities
[英]Java: Multiple representations of the same object
我有一個像這樣的User.class:
public class User {
private HashSet<Client> clients;
...
public void addClient(Client c) {
c.setParentUser(this);
clients.add(c);
}
和Client類:
public class Client {
private User parentUser;
public void setParentUser(User u) {
parentUser = u;
}
...
}
我的問題是,在c.setParentUser(this)
,我的意圖是為持有客戶端的用戶提供一個“指針”。
所以我的問題是: c.setParentUser(this)
只會在客戶端中存儲引用,還是會創建一個與this
(用戶)完全相同的新對象?
它存儲一個引用,例如C / C ++指針。 變量parentUser
引用與this
對象相同的對象(在User
類中)。
如果要復制,則需要明確地進行。
這是參考 ,不是副本。
Java中除原語 (int,double等)之外的所有內容都是參考。 如果我寫:
String s = "abc";
那么嚴格來說, s
實際上是對String
的引用。 本身不是String
。 對於對象(不是原語),您必須顯式編寫一個副本構造函數以創建副本。 如果我將s
傳遞給方法,則引用將按值復制,但仍引用原始的String
對象。
Client.parentUser將包含傳遞到setParentUser
方法中的引用的副本。
請注意,如果執行以下操作:
public void setParentUser(User u) {
parentUser = u;
u = new User();
}
如果您修改Client.parentUser
的字段,則引用將被更改,並且傳遞給函數的原始User
的引用也將不會更改。
c.setParentUser(this);
這是“ Has A
關系”,它僅包含User對象的對象引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.