Hibernate更新查询

Déb*_*ora 3 java hibernate

任何人都告诉我这个SQL代码的HQL

UPDATE ModelClassname SET ClassVariablename = ClassVariablename + 10 WHERE ClassVariableId = 001;

Gui*_*ume 5

使用HQL没有必要这样做,如果你想通过JDBC查询(甚至通过Hibernate查询,你可以使用SQL查询),你可以使用直接SQL.

仅在进行批量更新时建议使用HQL查询进行更新,而不是单行. http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html#batch-direct

更面向对象的方法是使用HQL加载对象,在Java世界中执行您需要做的事情(columnValue + = 10,无论您需要做什么),然后使用hibernate session flush将其保留.

我想它涉及更多的操作,所以效率较低(纯粹的性能),但依赖于你的Hibernate配置(缓存,集群,二级缓存等),它可能会好很多.当然,更不用说更可测试了.


Mik*_*unu 5

正如其他人所说,有更好的方法,但如果您真的必须这样做,那么例如使用以下语法:

update EntityName m set m.salary = m.salary +10 where m.id = 1
Run Code Online (Sandbox Code Playgroud)


Ada*_*kin 1

HQL 查询应该看起来非常相似,只是您应该使用实体和属性名称(即您在 Java 中使用的任何名称)而不是使用表和列名称。