Hibernate不会在表中创建新条目

时间:2015-06-04 11:21:37

标签: hibernate

我有疑问。如果条目不存在,是否可以在数据库中创建新条目?如果存在,则应更新当前条目。

我有这样的事情:

@Transactional
public void saveSettingsForUser(String userId, SettingsMessageModel settings) {
    Session session = getSessionFactory().getCurrentSession();
    UserSettings userSettings = new UserSettings();
    userSettings = (UserSettings) session.load(UserSettings.class, userId);
    userSettings.setUserId(userId);
    userSettings.setAutoanswer(settings.isAutoanswer());
    userSettings.setDnd(settings.isDnd());
    session.save(userSettings);
}

适用于数据库中已有的条目。但是,如果我想用primery key userId保存新的,它不允许我。 任何建议表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

如果以下代码不存在此ID,我设法创建新条目:

@Transactional
public void saveSettingsForUser(String userId, SettingsMessageModel settings) {
    Session session = getSessionFactory().getCurrentSession();
    UserSettings userSettings = (UserSettings) session.get(
            UserSettings.class, userId);
    if (userSettings == null) {
        userSettings = new UserSettings();
    }

    userSettings.setUserId(userId);
    userSettings.setAutoanswer(settings.isAutoanswer());
    userSettings.setDnd(settings.isDnd());
    session.saveOrUpdate(userSettings);
}

我使用session.get()方法而不是session.load()。这种方法允许我检查数据库中是否有条目,如果没有,我创建它。 希望它会帮助别人。