sql:
  select s.id as id ,s.name as name,c.coursename as coursename ,c.score as score
  from student as s,course as c
  where s.id = c.id and s.id=1在执行sess.createSQLQuery(sql).addEntity(StudentDetail.class).setInteger(0, id).list();是发生了org.hibernate.MappingException: Unknown entity: com.vo.StudentDetail错误
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:628)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.getSQLLoadable(SQLQueryReturnProcessor.java:335)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.processRootReturn(SQLQueryReturnProcessor.java:376)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.processReturn(SQLQueryReturnProcessor.java:355)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.process(SQLQueryReturnProcessor.java:171)网上找了些资料说是hibernate的配置文件有问题,但是StudentDetail并不是底层的模型类,是我自己架构的,这个问题该怎么解决?在线等啊~

解决方案 »

  1.   

    com.vo.StudentDetail没连接好?调试下
      

  2.   


    ? StudentDetail这个类是根据页面需要写的,在数据库中没有对应的表,也就是没有hibernate的映射文件,怎么办?
      

  3.   

    一定要建表吗? 可是并不会往表了存数据啊,StudentDetail只是页面需要临时架构的         ,有没有其他什么办法?
      

  4.   

    建议你这样写:session.createSQLQuery(sql).addScalar("id", Hibernate.INTEGER).list;
    我看你的SQL也就一个id条件,就这样写,如果有多个条件继续在后面.addScalar();
    这个方法的第一个参数要和你的条件顺序相对应!第二个参数类型也是要对应的!
    比如:你有多个条件,但id并不是在第一个,然后用addScalar()时放在第一,会抛异常的!
      

  5.   

    see
    org.hibernate.transform.AliasToBeanResultTransformer  List resultWithAliasedBean = s.createCriteria(Enrolment.class)
       .createAlias("student", "st")
       .createAlias("course", "co")
       .setProjection( Projections.projectionList()
       .add( Projections.property("co.description"), "courseDescription" )
       )
       .setResultTransformer( new AliasToBeanResultTransformer(StudentDTO.class) )
       .list();