hibernate SELECT导致UPDATE

时间:2014-04-02 17:05:49

标签: java hibernate orm sybase

此问题类似于以下内容:

What caused hibernate generate a update clause?

但似乎没有回答

日志说明以下是更新消息。但是,我们没有明确地这样做。 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 个答案:

答案 0 :(得分:3)

默认情况下,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?");
}