java只更新hibernate中给定的行数
我有一个更新数据库中记录的方法,下面是我的方法:
String hqlUpdate="UPDATE VFSMSServerOut vFSMSServerOut SET vFSMSServerOut.status=:rowStatus where cast(vFSMSServerOut.createDate as date) between :fromDate and :toDate and vFSMSServerOut.status in ('U','NU'))";
int rowsCount=4
public void updateProcessingRows(String hqlUpdate, Date frmDate, Date toDate,Integer rowsCount)
throws SecMsgException {
Session session = null;
try {
session = hibernateTemplate.getSessionFactory().openSession();
Query updateProcessingRows = session.createQuery(hqlUpdate);
updateProcessingRows.setString("rowStatus", "QU");
updateProcessingRows.setDate("fromDate", frmDate);
updateProcessingRows.setDate("toDate", toDate);
updateProcessingRows.setMaxResults(rowsCount);
updateProcessingRows.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
但是,查询不会只更新四行,而是更新给定日期范围内的所有行
如何设置要更新的行数
# 1 楼答案
setMaxResults(rowsCount)
用于UI目的,如分页。如果只想更新四行,则必须在休眠查询中进行更改编辑:根据HQL,没有具体的解决方案可用,但如果您想这样做,请遵循以下步骤-
1:编写HQL以选择该日期范围内的所有行。它将返回一个列表对象
2:现在更新列表中第一个'n'元素的特定属性(要更新的属性),并通过
session.update()
方法再次存储这些行的对象希望这对你有帮助