2011-11-07 97 views
0

我正試圖保存一個UserOnline對象,它與數據庫中的用戶有OneToOne關係。如果它不存在,我想創建一個新的,如果它存在,只需更換房間。將OneToOne映射對象保存在數據庫中?

這是我使用的代碼:

UserOnline uo = (UserOnline) UserOnline.find("byUser", 
      getConnectedUser()).first(); 

    if (uo == null) { 
     uo = new UserOnline(getConnectedUser(), room); 
     room.save(); 
    } else { 
     uo.currentRoom = room; 
     uo.save(); 
    } 

出於某種原因,即使UO實際上是空,該對象不實際保存。任何想法,爲什麼這是?這不是給我一個錯誤,它只是不創造記錄。我也想知道如何從User對象開始創建一個UserOnline對象。

User user = User.findById(1); 
user.onlineStatus.room = room. 
user.save(); 

燦相關對象進行的東西(創建如果不存在,否則編輯)保存這種方式?

User.java

@OneToOne(mappedBy="user") 
public UserOnline onlineStatus; 

的save()方法是from the play framework.

+0

你能提供更多的代碼嗎?例如。 save()函數以及對象之間的關係是如何建模的... – bert

+0

save()方法來自播放框架,我應該提到這一點。發佈更新! – networkprofile

回答

1

我想這個問題是發揮框架有關。如果是這樣,最好將它標記爲這樣,因爲在Play Framework中使用Hibernate具有一些特性,請參閱Explicit save

關於這個問題,Play Framework的save()級聯在其上的關係有cascade=CascadeType.ALL。如果你的關係是這樣配置的,它應該可以正常工作。

+0

我目前的代碼似乎與Cascade選項一起工作。我也可以這樣從用戶對象創建我的useronline對象嗎? – networkprofile