java - 如何将脚本sql的值获取到对象java

标签 java sql hibernate

我的数据库中有两个对象 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/

相关文章:

java - spring-hibernate-jpa namedNativeQuery 中的列名无效

mysql - 更新数据库表的有效方法

java - 没有主键 ID 的实体

java - JAXB:默认情况下哪些元素是可编码|不可编码的?

MySQL - 先按字母顺序排列字段,然后按小数点排列

sql - 调整 mysql 查询以获得更好的性能

Java Web 服务器将 if-modified-since 与上次修改进行比较

java - 如何通过数组对声音进行属性并使用Jbutton播放?

MySQL:如何根据表2中的列的条件更新表1中的列

java - 针对一个特定的 JDBC 错误调整 hibernate 日志记录级别