【问题标题】:Delete where record field < getdate()删除 where 记录字段 < getdate()
【发布时间】:2009-05-24 21:21:44
【问题描述】:

在不使用表或字段名称的情况下,当特定字段小于SQL 服务器上的日期 时,我无法弄清楚如何删除一组记录。

因为我使用的是 MSSQL,所以查询看起来像这样:

DELETE FROM tickets WHERE expires < getdate()

我将如何让 Hibernate 执行此操作?我正在研究 HQL,但没有找到指定 getdate() 的方法。

【问题讨论】:

    标签: sql-server hibernate date sql-delete


    【解决方案1】:

    您可能应该定义一个命名的 SQL 查询:

    <sql-query name="DeleteExpiredTickets">
     DELETE FROM tickets WHERE expires < getdate()
    </sql-query>
    

    然后调用:

    session.getNamedQuery("DeleteExpiredTickets").executeUpdate();
    

    【讨论】:

    • 我可以这样做。这在配置文件中的什么位置?
    • 如果您使用的是 hbms,您需要以与类映射相同的方式添加它。只需将类定义替换为上面的代码即可。
    【解决方案2】:

    我相信你可以使用 query.substitutions 配置。看看这个帖子和答案中的链接:

    Getting DATEPART in HQL or Criteria?

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2023-03-24
      相关资源
      最近更新 更多