我正在尝试使用hibernate jpa实现执行存储过程,但是我收到一个错误,因为 Hierarchy.class 不是一个实体但是我不允许在数据库。有没有办法只使用它来检索映射的结果而不创建表?
Query query = session.createSQLQuery("CALL prc_hrGetHierarchyList(:Emp)")
.addEntity(Hierarchy.class)
.setParameter("Emp", employeeNumber);
例外:
Unknown entity: model.hris.Hierarchy
答案 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));
}