【问题标题】:Difference in result of my Native query and JPQL(JPA)我的本机查询和 JPQL(JPA) 的结果差异
【发布时间】:2012-01-27 22:57:50
【问题描述】:

我的本​​机查询是(这是工作):

Update XXX SET preDeck=deck, deck=deck+1 WHERE ...

原生查询的结果是:deck=1 and preDeck=0(就是我想要的)

但在 JPQL 中并没有发生:

UPDATE XXX SET preDeck=deck, deck=deck+1 WHERE ...

结果是:deck=1 and predeck=1

解决办法是什么?

RGDS

【问题讨论】:

    标签: java jakarta-ee jpa jpql


    【解决方案1】:

    有趣的问题。为您的 JPQL 查询生成的 SQL 是什么?您使用哪种 JPA 引擎?

    无论如何,解决方案是在使用 JPA 时避免更新查询,尤其是在要更新的实体数量很少的情况下。查询实体,更新它们的状态,并让 JPA 为您刷新更改。

    如果必须更新大量实体,您仍然可以使用本机查询而不是 JPQL 查询。或者你可以使用两个查询:一个设置 preDeck,一个设置 deck 为 preDeck + 1。

    【讨论】:

    • 如何查看jpql查询生成的sql?
    • 查看 code.google.com/p/log4jdbc 和 code.google.com/p/log4jdbc-remix
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2014-06-25
    相关资源
    最近更新 更多