【问题标题】:Hibernate: HQL is not working [closed]休眠:HQL 不工作 [关闭]
【发布时间】:2016-10-25 04:40:30
【问题描述】:

我使用 where 子句和 and 在我的休眠应用程序中编写了一个 SQL 查询。

这是方法,

public List<Comobility> getComobilityByIdComobilityItemsAndIdPatient(int idComobilityItems, int idPatient, Session session) {
    Query query = session.createQuery("from Comobility where comobility_items_idcomobility_items= :idComobilityItems and patient_idpatient= :idpatinet");
    query.setParameter("idComobilityItems", idComobilityItems);
    query.setParameter("idpatinet", idPatient);
    List<Comobility> list = query.list();
    return list;
} 

但这不起作用。没有任何异常或错误。实际上,没有任何结果。

有什么想法吗?

【问题讨论】:

  • 您遇到了什么错误/异常
  • “但这不起作用” 怎么回事?它以什么方式不起作用?你看到了什么行为?是编译错误吗?运行时是否抛出异常?您是否从数据库中得到了意想不到的结果?!怎么了?
  • @mhasan:没有任何异常或任何错误。这就是为什么我很困惑。
  • @Barrier “无结果”是指代码生成的列表为空吗?并且您已验证数据库中存在符合您的搜索条件的数据?
  • @nbrooks:并非所有问题都会产生错误,您有 13K+ 分,即使您是学生,也应该认真了解这一点。

标签: java sql hibernate


【解决方案1】:

你应该这样尝试

  1. 用 try catch 块包裹你的方法。我相信查询有错误然后它会进入捕获块

    public List<Comobility>getComobilityByIdComobilityItemsAndIdPatient(int idComobilityItems, int idPatient, Session session) {
        try {
             logger.debug("xxxx")
             //do comething
        } catch (Exception e) {
            e.printStackTrace();
        }
    } 
    
  2. 确保你的方法参数不是null

  3. 检查您的列表是否为空。

  4. 为了检查,您可以使用 IDE 调试器或在您的方法中添加一些日志。

【讨论】:

    【解决方案2】:

    您需要检查日志中生成的 SQL 并针对数据库执行它。如果查询被编译并且没有返回记录,则意味着没有特定条件的记录。

    要通过 Hibernate 生成 SQL,请在 hibernate 配置中将属性 show_sql 设置为 true。

    【讨论】:

      猜你喜欢
      • 2016-03-08
      • 1970-01-01
      • 2019-07-16
      • 2013-12-27
      • 1970-01-01
      • 2012-01-18
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多