我有一个更新数据库中记录的方法,以下是我的方法:
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();
}
}
但是查询不是仅更新四行,而是更新所有属于给定日期范围的行。
如何设置要更新的行数
答案 0 :(得分:1)
setMaxResults(rowsCount)
用于UI目的,例如分页。如果您只想更新四行,则必须在 Hibernate查询中进行更改。
编辑:根据HQL,没有具体的解决方案,但如果您想这样做,请按照以下步骤操作 -
1:编写HQL以选择该日期范围之间的所有行。它会返回一个列表对象。
2:现在更新第一个' n'的特定属性(您要更新的属性)通过session.update()
方法再次列出和存储这些行的对象。
希望这会对你有所帮助。