我正在尝试在数据库中保存UserOnline对象,该对象与User具有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实际上为null,实际上也没有保存该对象。任何想法为什么会这样?它没有给我一个错误,它只是没有创建记录。我也想知道如何从User对象开始创建一个UserOnline对象。
像
这样的东西User user = User.findById(1);
user.onlineStatus.room = room.
user.save();
可以通过这种方式保存(如果它们不存在和以其他方式编辑)相关对象吗?
@OneToOne(mappedBy="user")
public UserOnline onlineStatus;
save()方法是from the play framework.
答案 0 :(得分:1)
我猜这个问题与Play Framework有关。如果是这样,最好将其标记为这样,因为在Play Framework中使用Hibernate有一些特殊性,请参阅Explicit save。
关于这个问题,Play Framework的save()
是关于cascade=CascadeType.ALL
的关系的级联。如果您的关系是以这种方式配置的,那么它应该可以正常工作。