仅更新hibernate中给出的行数

时间:2014-03-13 10:12:25

标签: java sql 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 个答案:

答案 0 :(得分:1)

setMaxResults(rowsCount)用于UI目的,例如分页。如果您只想更新四行,则必须在 Hibernate查询中进行更改。

编辑:根据HQL,没有具体的解决方案,但如果您想这样做,请按照以下步骤操作 -

1:编写HQL以选择该日期范围之间的所有行。它会返回一个列表对象。

2:现在更新第一个' n'的特定属性(您要更新的属性)通过session.update()方法再次列出和存储这些行的对象。

希望这会对你有所帮助。