Как работать с session.merge в Hibernate? - PullRequest
0 голосов
/ 15 апреля 2019

Я сейчас испытываю эту проблему. Используя метод hibernate 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 голосов
/ 15 апреля 2019

Как правило, при использовании HibernateUtil.getSessionFactory().openSession() вместо .getCurrentSession() вы должны вручную сбрасывать объекты.

Поэтому попробуйте вызвать это непосредственно перед фиксацией транзакции:

session.flush();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...