Сохранение сопоставленного объекта OneToOne в базе данных? - PullRequest
0 голосов
/ 07 ноября 2011

Я пытаюсь сохранить объект UserOnline, который имеет отношение 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 на самом деле нулевое, объект на самом деле не сохраняется.Есть идеи, почему это так?Это не дает мне ошибку, это просто не создает запись.Мне также интересно, как я мог бы создать объект UserOnline, начиная с объекта User.

Что-то вроде

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

Могут ли связанные объекты быть (созданы, если они не существуют и отредактированы иначе) сохранен таким образом?

User.java

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

Метод save () - из среды воспроизведения.

1 Ответ

1 голос
/ 07 ноября 2011

Полагаю, этот вопрос связан с Play Framework.Если это так, было бы лучше отметить его как таковой, поскольку использование Hibernate в Play Framework имеет некоторые особенности, см. Явное сохранение .

Что касается вопроса, то save() в Play Frameworkкаскадные отношения, которые имеют cascade=CascadeType.ALL.Если ваши отношения настроены таким образом, они должны работать нормально.

...