【问题标题】:hibernate SELECT causes UPDATE休眠 SELECT 导致 UPDATE
【发布时间】:2014-05-14 03:22:48
【问题描述】:

这个问题类似于以下:

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();

【问题讨论】:

  • 如何创建会话?你正在使用什么同花顺策略?您是否可以读取 ObjectA 的实例,然后在它仍附加到会话时修改它的某些字段?那个不被接受的答案也可以给你一些线索。

标签: java hibernate orm sybase


【解决方案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?");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    相关资源
    最近更新 更多