Постоянное поведение объекта в спящем режиме

Я пытался узнать о различных состояниях объектов в Hibernate. Я попробовал следующее и не смог найти объяснения показанному поведению. Может ли кто-нибудь помочь?

Вот что я пытаюсь сделать: Вставить новую запись в таблицу сотрудников (empId является первичным ключом). В той же транзакции обновите вновь добавленную запись (используя запрос, изменяя empName). Затем, когда я проверяю свойство empName постоянного объекта, оно продолжает показывать старое значение empName. Я ожидал, что, будучи постоянным объектом, он отразит изменения, внесенные в базу данных. Я не мог понять, почему этого не произошло. (В моем конфигурационном файле гибернации все установлено по умолчанию, кроме свойства "hibernate.hbm2ddl.auto", установленного как update) Однако после выполнения обновления, когда я устанавливаю empName постоянного объекта со значением, возвращаемым getEmpName ( который отображается как старое значение empName по sysout), окончательные данные в таблице показывают новое значение empName (то есть то, которое я обновил с помощью hql). Пожалуйста, обратитесь к коду для этого:

Transaction tx = session.getTransaction();
    tx.begin();

    Employee e1 = new Employee();
    e1.setEmpId(1);
    e1.setEmpName("Jack");
    e1.setEmpAge(25);
    session.save(e1);
    System.out.println("before: "+e1.getEmpName()); //prints Jack
    session.createQuery("update Employee set empName = \'Jack_new\' where id=1").executeUpdate();
    System.out.println("after: "+e1.getEmpName()); //prints Jack
    e1.setEmpName(e1.getEmpName()); //should update database
    tx.commit(); //sets empName value to Jack_new, as seen in table
    System.out.println("last: "+e1.getEmpName()); //prints Jack
0
задан masted 21 November 2011 в 07:30
поделиться