JPA是否可以使用play框架来执行UPDATE sql查询?
目前,我对实体进行更新的目的是:
但我猜它会产生2个查询:SELECT和UPDATE。
有没有办法只使用一个查询来完成所有事情?只有UPDATE查询?
感谢您的帮助
答案 0 :(得分:2)
只要您使用API方法,我认为您不会解决您的2个查询问题。实体经理不能只是开始更新实体。它必须首先找到它们,检查它们的状态,然后决定是否真的需要更新,即是否进行了更改。
但是,您可以使用JPQL
编写自己的参数化更新语句。您的find()
很可能会使用与您实体的主键相匹配的ID或类似内容
您可以将id传递给语句并直接更新。我只会这样做,如果id不是来自用户输入,而是来自之前的选择。换句话说,保证是现有的实体和你真正想要的实体。
查询可能如下所示:
UPDATE MyTable SET MyValue = :newValue WHERE MyId = :id
将newValue和id作为参数传递的位置。
但是,我宁愿让实体经理完成所有工作。为什么你想在一个声明中做到这一点?除非您正在进行大量操作,否则速度不应成为问题,因为这些简短且具体的陈述通常非常快。