在数据库中保存OneToOne映射对象?

时间:2011-11-07 08:53:16

标签: java hibernate playframework one-to-one

我正在尝试在数据库中保存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();

可以通过这种方式保存(如果它们不存在和以其他方式编辑)相关对象吗?

User.java

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

save()方法是from the play framework.

1 个答案:

答案 0 :(得分:1)

我猜这个问题与Play Framework有关。如果是这样,最好将其标记为这样,因为在Play Framework中使用Hibernate有一些特殊性,请参阅Explicit save

关于这个问题,Play Framework的save()是关于cascade=CascadeType.ALL的关系的级联。如果您的关系是以这种方式配置的,那么它应该可以正常工作。