当我使用它时,我得到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;
}
答案 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
表示返回整个对象