如何使用hibernate从数据库中检索数据?

时间:2015-05-22 08:44:40

标签: java hibernate spring-mvc sql-server-2005

当我使用它时,我得到java.lang.ClassCastException:
java.lang.String无法强制转换为com.transgenomic.domain.Note错误显示

public List<Note> getNoteDescription(Long userId) {
    Session session=sessionFactory.openSession();
    Transaction transaction=session.beginTransaction();
    SQLQuery query=session.createSQLQuery("SELECT n.description"
         + " FROM notes n, users u, tasks t "
         + " where u.userId=t.assignTo AND t.taskId=n.taskId");

    List<Note> notes=query.list();
    System.out.println("***********"+notes);
    transaction.commit();
    session.close();
    return notes;
}

2 个答案:

答案 0 :(得分:1)

Hibernate从Query.list方法返回一个原始List。

您正在进行从List<?>List<Note>的不安全演员表示 - 这是无法避免的。

使错误消失的唯一方法是:

List<Note> list = new LinkedList<>();
for(Note n : query.list()) {
    list.add((Note));
}

答案 1 :(得分:0)

或者:
将您的选择从SELECT n.description更改为SELECT n

将您的方法返回类型和notes类型从List<Note>更改为List<String>

假设类型&#34;描述&#34;是String,使用SELECT n.description只返回该字段,因此query.list()将返回List,这与预期的List<Note>

不匹配

使用SELECT n表示返回整个对象