我现在遇到此问题。使用休眠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);
当我查看数据库时,我的数据没有任何变化。从我的其他代码(使用其他类)中,我做了同样的事情,并且我的数据已成功更新。
答案 0 :(得分:0)
通常,当使用function handleUserDeleted(userId, client) {
removeUserFromMyQuery(userId, client)
removeUserFromSearchQuery(userId, client)
removeIdFrom20MoreQueries(userId, client)
}
代替HibernateUtil.getSessionFactory().openSession()
时,应该手动刷新对象。
因此,尝试在事务提交之前调用它:
.getCurrentSession()