我有这个查询,NamedQuery
使用Hibernate
这是我的示例代码。
NamedQuery
@NamedQuery(name="com.company.generic.model.Student.getByID()",query="select name from com.company.generic.model.Student where id=:id")
Java Code
private Student getStudentNameById(Integer id)
{
final Session session = ....
final Query query = session.getNamedQuery("com.company.generic.model.Student.getByID()")
.setParameter("id",id)
.setResultTransformer(Transformers.aliasToBean(Student.class));
final Student student = (Student)query.uniqueResult();
return student;
}
当查询返回所有列时resultTransformer
工作正常但是当我返回时只返回几列
Exception in thread "main" org.hibernate.PropertyNotFoundException: Could not find setter for 0 on class com.company.generic.model.Student
我的问题是
1)。为什么适用于所有列,但不适用于少数或仅适用于一列。
2)。namedQuery 和使用 resultTransformer 的 Criteria 之间的差异是什么?namedQuery 应该有 setProjection 吗?
3)。我必须自己写变压器吗?任何解决方法...?
多谢...