未知实体:JPA程序执行

时间:2015-11-26 22:08:11

标签: spring hibernate spring-mvc jpa

我正在尝试使用hibernate jpa实现执行存储过程,但是我收到一个错误,因为 Hierarchy.class 不是一个实体但是我不允许在数据库。有没有办法只使用它来检索映射的结果而不创建表?

Query query = session.createSQLQuery("CALL prc_hrGetHierarchyList(:Emp)")
                .addEntity(Hierarchy.class)
                .setParameter("Emp", employeeNumber);

例外:

Unknown entity: model.hris.Hierarchy

2 个答案:

答案 0 :(得分:2)

addEntity方法总是只需要实体类。你可以通过其他方式完成它。

SQLQuery sqlQuery = (SQLQuery)  session.createSQLQuery("CALL prc_hrGetHierarchyList(:Emp)").setResultTransformer(Transformers.aliasToBean(Hierarchy.class));
sqlQuery.addScalar("your column Name", StringType.INSTANCE);
sqlQuery.addScalar("your column Name", DoubleType.INSTANCE);
return sqlQuery.list();

答案 1 :(得分:0)

  • 确保您使用javax.persistence.Entity注释实体bean。如果您导入org.hibernate.annotations.Entity

  • ,则可能会发生这种情况
  • 您可以使用callableStatement来完成此操作。

    Session session = sessionFactory.openSession();         
    
    CallableStatement  callableStatement = session.connection().prepareCall("{prc_hrGetHierarchyList(?)}");    
    callableStatement.setInt(1, employeeNumber);    
    callableStatement.execute();
    resultSet = callableStatement.getResultSet(); 
    
    while(resultSet.next()){
       System.out.println(resultSet.getString(1));
    }