我正在尝试通过this answer.中的示例来检索我的数据库中的结果列表。但是,我不断收到以下错误:
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
上面的两个查询不应该生成相同的结果吗?我是否错过了对List接口的强制转换,以允许它在类型化查询中工作?
答案 0 :(得分:3)
当应用程序尝试调用抽象方法时,会抛出AbstractMethodError
异常
你有很多Hibernate和JPA版本。
TypedQuery
中引入了 JPA 2.0
,Hibernate自3.5.X
Suggesstion:使用Hibernate版本3.6.3
(或更高版本)的实现。
答案 1 :(得分:0)
您可能正在使用两个不同版本的界面EntityManagerImpl
和实施$myCode = 1;
$sth = $db->prepare("INSERT INTO tblCodes (myCode) VALUES (CAST(CAST(:myCode AS varchar) AS INTEGER))");
$sth->bindParam(':myCode', $myCode, PDO::PARAM_INT);
$sth->execute();
。