【问题标题】:hibernate Exception when execute the jpa sub query执行 jpa 子查询时出现休眠异常
【发布时间】:2013-07-24 22:07:11
【问题描述】:
query=entityManager.createQuery(" select a.birthDate from PersonalDetailsDomain a where a.empCode=(select b.empCode from User b where b.userId=?)");
    query.setParameter(1,userId);
    Date dob =(Date)query.getSingleResult();

异常:

java.lang.IllegalArgumentException: org.hibernate.QueryException: 无法解析属性:empCode of: com.erp.hrms.User [ select a.birthDate from com.erp.hrms.newjoinee.PersonalDetailsDomain a where a.empCode =(select b.empCode from com.erp.hrms.User b where b.userId=?)]

【问题讨论】:

标签: java


【解决方案1】:

使用 ':userId' 而不是 '?'并且还使用方法 createSQLQuery 进行原生 sql 查询。

query=entityManager.createSQLQuery(" select a.birthDate from PersonalDetailsDomain a where a.empCode=(select b.empCode from User b where b.userId= :userId)");

query.setParameter("userId", userId);

Date dob =(Date)query.getSingleResult();

【讨论】:

    【解决方案2】:

    您确定正确映射了 User.empCode 的字段(或相关访问器)吗?
    附上User的定义,会有帮助的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2014-03-09
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多