гибернация выберите причины обновления


Этот вопрос аналогичен следующему:

Что заставило hibernate создать предложение update?

Но, кажется, у него нет ответа

В журнале записано следующее сообщение об обновлении. Однако мы не делаем этого явно. Hibernate каким-то образом автоматически генерирует это по инструкции SELECT

update
        ops2.dbo.ObjectA
    set
        AcceptDate=?,
        ActionTaken=?,
        ModifyBy=?,
        ModifyByID=?,
        ModifyDate=?,
        ModifyDept=?,
        ParentId=?,
        Priority=?,
        RepRqmt=?,
        SchedDate=?,
        SchedDate=?,      
    where
        Rank=?

Это утверждение, которое порождает проблему:

  Query query =
            session.createSQLQuery("SELECT * FROM ProductOrders").addEntity(MyOrder.class);

        List<MyOrder> orders= query.list();
1 2

1 ответ:

По умолчанию Hibernate сбрасывает отложенные изменения перед выполнением запроса, чтобы убедиться, что запрос видит изменения, внесенные до выполнения этого запроса. Если бы это было не так, вы могли бы иметь эту неприятную ситуацию:

Foo foo = (Foo) session.get(Foo.class, 1L);
foo.setColor("red");
List<Foo> redFoos = 
    session.createQuery("select foo from Foo foo where foo.color = 'red'");
if (redFoos.isEmpty()) {
    System.out.println("WTF?");
}