java - Hibernate:将 HQL 查询切换为 SQL 查询,抛出异常:java.lang.ClassCastException

标签 java sql hibernate spring-mvc hql

在我的 DaoImpl 类中,我试图获取类型 TBatchEntry(model class) 的数据列表

@Override
public List<TBatchEntry> getBatchListFormQuery(String batchNo) {

    session = sessionFactory.openSession(); 
    List<TBatchEntry> batchListFromQuery = new ArrayList<TBatchEntry>();
    try {           
        tx = session.beginTransaction();
        batchListFromQuery =  session.createSQLQuery("SELECT * FROM pghms.t_batchentry WHERE t_regNo LIKE '2008%'").list(); 
        tx .commit();           
    }catch(Exception e) {       
        e.printStackTrace();
        session.getTransaction().rollback();            
    }
    return batchListFromQuery;
}

在我的 Controller 类中,我试图打印值,但它在注释行中抛出错误:

List<TBatchEntry> batchListFromQuery = new ArrayList<TBatchEntry>();

try{
        batchListFromQuery = adminService.getBatchListFormQuery(batchNo);
 }catch(Exception e){
        e.printStackTrace();
 }
Iterator its = batchListFromQuery.iterator();
    while(its.hasNext()){
        batchFromQuery = (TBatchEntry) its.next();  //This line thorws error
        System.out.println(batchFromQuery.getName());
    }

这是我的实体类

@Entity
@Table(name="t_batchEntry")
public class TBatchEntry {

  @Id
  @Column(name="t_regNo")
  private String regNo;
  @Column(name="t_name")
  private String name;

  public String getRegNo() {
    return regNo;
  }
  public void setRegNo(String regNo) {
    this.regNo = regNo;
  }
 public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }

}

tomcat`根本原因日志

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.sv.pghms.model.TBatchEntry 

如果有人能帮助我,我会非常感激。

最佳答案

尝试这种方法,只需更改类名和条件即可。它对我有用。 希望它对您有用。

List<Book> books = this.sf.getCurrentSession().createSQLQuery("select * from Book where book_id > 3")
                         .addEntity(Book.class)
                          .list();
    for (Book book : books) {
        System.out.println("Book Names are :: " + book.getBookName());
    }

关于java - Hibernate:将 HQL 查询切换为 SQL 查询,抛出异常:java.lang.ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48716026/

相关文章:

mysql - 从同一个表中选择不同条件的字段

php - 如何防止 PHP 中的 SQL 注入(inject)?

Java JPA Hibernate SqlResultSetMapping 别名

java - 在 Ruby 中创建类似字节缓冲区的对象

Java 嵌入式数据库 h2

java - 了解 IOexceptin()

java - 尝试使用 Java 发布时出现 HTTP 500 错误

php - 如果执行 mysql 更新语句则返回 true,如果没有更新行则返回 false

java - 为什么 Hibernate 默认不设置 @DynamicInsert

database - 在企业应用程序中与 Grails 一起使用的最佳数据库是什么?