我正在尝试在数据库中保存一个 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();
相关对象可以(如果不存在则创建并以其他方式编辑)以这种方式保存吗?
用户.java
@OneToOne(mappedBy="user")
public UserOnline onlineStatus;
save()方法是from the play framework.
最佳答案
我猜这个问题与Play Framework有关。如果是这样,最好将其标记为这样,因为在 Play Framework 中使用 Hibernate 有一些特殊性,请参阅 Explicit save .
关于这个问题,Play Framework 的 save()
级联在具有 cascade=CascadeType.ALL
的关系上。如果您的相关关系是这样配置的,那么它应该可以正常工作。
关于java - 在数据库中保存 OneToOne 映射对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034385/