当前位置: 首页 > 知识库问答 >
问题:

createQuery期间的java.lang.AbstractMethodError

洪琦
2023-03-14
java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.createQuery(Ljava/lang/String;Ljava/lang/Class;)Ljavax/persistence/TypedQuery;

下面是我的代码,用来说明我是如何调用它的:

@Entity
@Table(name = "MY_TABLE")
public class CoolsEntity implements Serializable {

    @Id
    @Column(name = "ID", columnDefinition = "Decimal(10,0)")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;

    @Column(name = "COOL_GUY_NAME")
    private String name;

    public String getId() {
        return id;
    }

    public void setId(final String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(final String name) {
        this.name= name;
    }
}

下面的代码将生成错误:

final String sql = "select c from CoolsEntity c";
final TypedQuery<CoolsEntity> query = em.createQuery(sql, CoolsEntity.class);
final List<CoolsEntity> results = query.getResultList();
return results;

但是,如果我做了这样的事情,我可以看到结果:

final String sql = "select c from CoolsEntity c";
final Query query = em.createQuery(sql);
@SuppressWarnings("unchecked")
final List<CoolsEntity> results = query.getResultList();
return results;

所有对em的引用都是通过此包导入的:

import javax.persistence.EntityManager

上面的两个查询不应该生成相同的结果吗?我是否缺少对列表接口的强制转换以允许它在类型化查询中工作?

共有1个答案

充浩波
2023-03-14

您有一个AbstractMethoderRorr异常,当应用程序试图调用抽象方法时会引发该异常。
您有一个相当混合的Hibernate和JPA版本。

TypedQuery是在JPA 2.0中引入的,自3.5.x以来,Hibernate实现了该规范

建议:使用Hibernate版本3.6.3(或更高版本)中的实现。

 类似资料:
  • 当使用JPA createQuery()时,我发现我们可以同时使用类名和实体名来获取DB数据。 这是按类名写的 em.createQuery(“from com.model.Stuff s”, Stuff.class).getResultList(); 这是来自实体名称 em.createQuery("from Stuff s",Stuff.class). getResultList(); 这是在

  • 问题内容: 谁能告诉我Hibernate的区别: 谁能告诉我这三个函数返回什么数据,cq指导我找到一个适当而简单的链接来研究这些Hibernate函数? 问题答案: 为了在Hibernate ORM框架中创建查询,有三种不同的类型。以下是创建查询实例的三种方法: 详细研究每个类别的详细信息。 方法createQuery()使用HQL语法创建Query对象。例如: 方法createSQLQuery(

  • 现在只有这个语句“session.createquery(....)”大约需要105毫秒,这是用上面提到的老方法执行整个查询任务的10倍。 现在我不确定Hibernate查询缓存是如何工作的,但如果我第二次运行这个相同的HQL语句,大约需要5毫秒。 现在我的问题是为什么使用Hibernate HQL会发生这种行为?任何人都知道“session.createquery(...)”内部发生了什么方法,

  • 问题内容: 我正在努力探究在尝试使用createQuery()运行HQL查询时发生的空指针异常的根源。 运行查询的代码非常简单。最初,我有一个我要调用的命名查询,但是只是为了使事情变得更简单并消除我正在做的任何麻烦(springwildlife是程序包,而Species是类/实体): (顺便说一句:我也尝试过使用其中没有包名的方法。并且我还尝试过执行一个更简单的“ FROM springwildl

  • 问题内容: 我正在尝试使用Spring @Transactional批注,但是在调用方法 findAll 时遇到问题,并且出现以下错误: 人DAO: 这是我的: 我尝试删除此行,但是又出现了一个错误,为什么这行不通? 问题答案: 您必须明确声明对事务管理器注释的支持 添加到您的配置中: tx是xmlns:tx =“ http://www.springframework.org/schema/tx”

  • 问题内容: 我正在尝试使用Spring @Transactional批注,但是在调用 findAll 方法时出现问题,并且出现以下错误: 人DAO: 这是我的: 我尝试删除此行,但是又出现了一个错误,为什么这行不通? 问题答案: 您必须显式声明对事务管理器注释的支持 添加到您的配置中: tx是xmlns:tx =“ http://www.springframework.org/schema/tx”