java - 如何在 Hibernate 中使用 session.merge?
问题描述
我现在遇到这个问题。使用休眠merge(Object o)
方法,它似乎不起作用,但奇怪的是在我的其他代码上它起作用了。这是我的代码看起来像:
public Player addOrUpdate(Player player){
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try{
tx = session.beginTransaction();
if(player.getId() == null){
id = (Integer) session.save(player);
}else{
session.merge(player);
id = player.getId();
}
tx.commit();
}//catch and finally
}
在我的主课上,我正在尝试这样做:
PlayerDao pDao = new PlayerDao();
Player p = new Player();
p.setId(1);
p.setStatus("Hello");
pDao.addOrUpdate(p);
当我查看我的数据库时,我的数据没有任何变化。从我的其他代码(使用其他类)中,我只是做了同样的事情并且我的数据已成功更新。
解决方案
通常,当使用HibernateUtil.getSessionFactory().openSession()
而不是.getCurrentSession()
您应该手动刷新对象时。
所以尝试在事务提交之前调用它:
session.flush();
推荐阅读
- python - 无法打开文件'/c':[Errno 2] 没有这样的文件或目录
- jenkins - jenkins 变量未显示在 shell 命令中
- .net - VB.net 应用程序保留以前的版本
- pipe - 检测管道挂起
- jquery - 如何将两个输入字段连接成一个隐藏字段以传递表单提交
- python - 在 python 中将数据从 1280 Hz 重新采样到 240 Hz
- html - 使用 rails content_tag 实现 Bootstrap Collapse
- sql - 将 Web API LocalHost 更改为服务器
- c++ - 为什么传递值返回函数在运算符函数上可以正常工作以重载 = 运算符而不是其他运算符?
- java - 如何在 rsql-jpa-specification 中为列表实现 LIKE 操作?