Java Hibernate提示有关更新所有表字段的性能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Hibernate提示有关更新所有表字段的性能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2086字,纯文字阅读大概需要3分钟。
内容图文
![Java Hibernate提示有关更新所有表字段的性能](/upload/InfoBanner/zyjiaocheng/820/5e36f3c4933145ab8124e5577660c773.jpg)
我有这样的要求.
protected Integer[] updateFullTable(final Class clazz){
final ProjectionList projectionList=Projections.projectionList().add(Projections.property("id"),"id");
final Criteria criteria=session.createCriteria(clazz)
.add(Restrictions.eq("typeOfOperation",1))
.add(Restrictions.eq("performUpdate",true));
criteria.setProjection(projectionList);
final List idsList=criteria.list();
final Integer[]ids = transformObjectArrayIntoIntegerArray(idList);
//NOW WE UPDATE THE ROWS IDS.
final Query query=session.createQuery("update "+clazz.getName()+" set activeRegister=true and updateTime=:updateTime where id in (:ids)")
.setParameter("updateTime",new Date())
.setParameterList("ids",ids);
query.executeUpdate();
return transform;
}
正如你们可以看到我需要更新表中的所有行,有时我会查询所有行ID,然后在单独的查询中将更新应用于那些ID,但是表有很多记录有时需要30秒到10分钟取决于的表.
我已将此代码更改为仅此一个更新.
final Query query=session.createQuery("update "+clazz.getName()+" set activeRegister=true and updateTime=:updateTime where typeOfOperation=1 and performUpdate=true");
只有这个查询我避免了第一个查询,但我不能再返回受影响的ID.但后来要求改变了
final StringBuilder logRevert;
参数已添加.
如果需要,需要存储更新的ID以将直接反向更新应用于数据库.
但随着我的更新,我不能再得到Ids.我的问题是如何使用存储过程获取或返回受影响的ID,或者在数据库或休眠中使用某些解决方法我的意思是只使用一个查询或增强的代码获得第一个行为.
任何提示.
我试过了
>使用标准
>使用HQL.
>使用namedQuery
>使用SqlQuery
>不使用变换器返回原始对象[]
但时代仍然有点高.
我想要类似的东西
query.executeUpdate(); // RETURNS THE COUNT OF THE AFFECTED ROWS
但我需要受影响的Ids ……
对不起,问题很简单.
UPDATE
使用@ dmitry-senkovich,我可以使用rawSQL,但不能使用hibernate,这里有一个单独的问题.
https://stackoverflow.com/questions/44641851/java-hibernate-org-hibernate-exception-sqlgrammarexception-could-not-extract-re
解决方法:
以下解决方案怎么样?
SET @ids = NULL;
UPDATE SOME_TABLE
SET activeRegister = true, updateTime = :updateTime
WHERE typeOfOperation = 1 and performUpdate = true
AND (SELECT @ids := CONCAT_WS(',', id, @ids));
SELECT @ids;
内容总结
以上是互联网集市为您收集整理的Java Hibernate提示有关更新所有表字段的性能全部内容,希望文章能够帮你解决Java Hibernate提示有关更新所有表字段的性能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。