gpt4 book ai didi

hibernate - 为什么 JPA CriteriaQuery 不提供更新查询?

转载 作者:行者123 更新时间:2023-12-02 22:17:42 25 4
gpt4 key购买 nike

JPA2.0中的CriteriaQuery提供了一种类型安全的方式来进行选择,这很棒。但我想知道为什么它不提供更新/删除操作?要批量更新/删除,您必须回到过去编写容易出错的 SQL 或 JPQL 文本。 IMO,用于更新/删除的 CriteriaQuery 应该不会很困难,因为 where 原因处理与 select 相同。

希望这能在下一版本的 JPA 中实现。

最佳答案

因为JPA是ORM工具,其动机是将数据库记录映射到对象,以便可以使用编程语言而不是SQL来操作数据库记录,所以它不鼓励使用SQL/HQL/JPQL执行更新。

为了防止使用容易出错的 SQL 或 JPQL 来更新对象,一旦使用 CriteriaQuery 检索对象列表,您只需循环遍历结果对象,然后更改对象的属性即可一个一个的对象,以便进行批量更新或删除。 JPA 应该能够检测对这些对象所做的更改,并在调用 EntityManager.flush() 时生成合适的 SQL 来批量更新相应记录。

关于hibernate - 为什么 JPA CriteriaQuery 不提供更新查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com