【问题标题】:Hibernate CreateNativeQuery return empty listHibernate CreateNativeQuery 返回空列表
【发布时间】:2017-06-05 18:27:47
【问题描述】:

我在我的项目中使用 Hibernate 和 JPA。我使用下面的代码返回对象列表,但是当我在 mysql 中使用 sql 时它返回空列表,它工作正常。

Query query=entityManager.createNativeQuery("select tools.* from tools where (SELECT DATEDIFF(:user_date,calibDate) AS DiffDate) < :diff",Tools.class);
    query.setParameter("user_date",userDate);
    query.setParameter("diff",day);
    return query.getResultList();

任何人都可以帮助找出问题所在?

【问题讨论】:

  • 检查您的参数。他们是他们应该的样子吗?
  • 是的,我的参数就是我想要调试的。
  • 尝试删除Tools.class,调试它并检查是否返回了一些东西
  • @I.G.Pascual 那没有用。相反,您应该启用查询日志记录,并查看发送到数据库的实际查询是什么。
  • @Kayaman,如果当休眠无法序列化到给定类时有一个后备,那么你是对的

标签: java hibernate jpa jakarta-ee jdbc


【解决方案1】:

您的查询应如下所示:

Query query=entityManager.createNativeQuery("select tools.* from tools where (SELECT DATEDIFF(:user_date,calibDate) AS DiffDate) < :diff",Tools.class);
    query.setParameter("user_date",userDate, TemporalType.DATE);
    query.setParameter("diff",day);
    return query.getResultList();

TemporalType.DATE 应该添加到 'user_date' 参数中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多