将OneToOne映射对象保存在数据库中?
问题描述:
我正试图保存一个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.
答
我想这个问题是发挥框架有关。如果是这样,最好将它标记为这样,因为在Play Framework中使用Hibernate具有一些特性,请参阅Explicit save。
关于这个问题,Play Framework的save()
级联在其上的关系有cascade=CascadeType.ALL
。如果你的关系是这样配置的,它应该可以正常工作。
+0
我目前的代码似乎与Cascade选项一起工作。我也可以这样从用户对象创建我的useronline对象吗? – networkprofile
你能提供更多的代码吗?例如。 save()函数以及对象之间的关系是如何建模的... – bert
save()方法来自播放框架,我应该提到这一点。发布更新! – networkprofile