为什么 JPA 标准查询不提供更新查询?



CriteriaQuery提供了一种类型安全的选择方式,非常棒。但我想知道为什么它不提供更新/删除操作?要进行批量更新/删除,您必须回到以前编写容易出错的SQL或JPQL文本的时代。IMO,更新/删除的标准查询不应被证明是困难的,因为原因处理与选择相同。

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

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

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

相关内容

  • 没有找到相关文章

最新更新