我的数据库中有两个对象 Person 和 Student Mapped with hibernate,另一个对象 ObjectPR 将两者结合在一起以在同一 View 中显示两个对象的值
这是我获取 ObjectPR 列表的代码 java
StringBuffer sql = new StreingBuffer();
sql.append("select p.name as name, s.level as level from
person p
join student s on s.pk_seq = p.fk_student ; ");
SQLQuery query = getSession().createSQLQuery(sql.toString());
query.addEntity(ObjectPR.class);
List results = query.list();
这是我的 ObjectPR 类
public class ObjectPR {
private String name;
private int level;
//getters setters ...
}
我得到了这个错误
org.hibernate.MappingException: Unknown entity: model.ObjectPR
最佳答案
我认为 NEW 运算符语法在这里就足够了。而且由于 Student 和 Person 是映射类,所以不要使用 native SQL,而是使用普通的 HQL 查询:
StringBuffer sql = new StringBuffer();
sql.append("select NEW model.ObjectPR(p.name as name, s.level as level)
from
Person p join p.student s");
Query query = getSession().createQuery(sql.toString());
List<ObjectPR> results = query.list();
记得给 ObjectPR 类添加一个合适的构造函数。
更新
对于 native sql,您需要像这样使用额外的转换器:
StringBuffer sql = new StreingBuffer();
sql.append("select p.name as name, s.level as level from
person p
join student s on s.pk_seq = p.fk_student ; ");
SQLQuery query = getSession().createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(ObjectPR.class));
List<ObjectPR> results = query.list();
关于java - 如何将脚本sql的值获取到对象java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43539483/