有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

    编辑:根据HQL,没有具体的解决方案可用,但如果您想这样做,请遵循以下步骤-

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

    2:现在更新列表中第一个'n'元素的特定属性(要更新的属性),并通过session.update()方法再次存储这些行的对象

    希望这对你有帮助