如何在Hibernate中使用session.merge?

时间:2019-04-15 09:54:49

标签: java hibernate session jpa 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);

当我查看数据库时,我的数据没有任何变化。从我的其他代码(使用其他类)中,我做了同样的事情,并且我的数据已成功更新。

1 个答案:

答案 0 :(得分:0)

通常,当使用function handleUserDeleted(userId, client) { removeUserFromMyQuery(userId, client) removeUserFromSearchQuery(userId, client) removeIdFrom20MoreQueries(userId, client) } 代替HibernateUtil.getSessionFactory().openSession()时,应该手动刷新对象。

因此,尝试在事务提交之前调用它:

.getCurrentSession()