【问题标题】:How to retrieving data from database using hibernate?如何使用休眠从数据库中检索数据?
【发布时间】:2015-08-04 05:02:26
【问题描述】:

当我使用它时,我得到 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;
}

【问题讨论】:

  • Hibernate Criteria 很容易。如果您发布地图,我们可以轻松为您提供帮助

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


【解决方案1】:

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

您正在执行从 List&lt;?&gt;List&lt;Note&gt; 的不安全转换 - 这是无法避免的。

消除错误的唯一方法是:

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

【讨论】:

    【解决方案2】:

    要么:
    将您的选择从 SELECT n.description 更改为 SELECT n

    将您的方法返回类型和notes 的类型从List&lt;Note&gt; 更改为List&lt;String&gt;

    假设“描述”的类型是String,使用SELECT n.description 将只返回该字段,因此query.list() 将返回列表,这与预期的List&lt;Note&gt; 不匹配

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

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多