Hibernate JPA createQuery/TypedQuery,无法识别我的表
这是我正在调用的函数:Hibernate JPA createQuery/TypedQuery,无法识别我的表,hibernate,jpa,Hibernate,Jpa,这是我正在调用的函数: public List<Student> getAllStudents() { TypedQuery<Student> query = entityManager.createQuery("SELECT e FROM Student as e", Student.class); List<Student> students = query.getResultList(); ret
public List<Student> getAllStudents() {
TypedQuery<Student> query = entityManager.createQuery("SELECT e FROM Student as e", Student.class);
List<Student> students = query.getResultList();
return students;
}
问题解决了!谢谢你们的帮助,还是个新手,犯了一些愚蠢的错误 您的查询应该如下所示: “从学生e中选择e” 请注意,实体是单数的(不是学生),您需要添加“FROM”,而不需要包含单词“AS” 我从本教程中学习了JPA: 您可以在此处查看JPQL示例: 所以我解决了这个问题 代码本身是正确的,但是Intellij使用了错误的标准JPA框架配置。在实现了正确的一个之后,所有的错误都消失了 我改变的另一件事是将这一行添加到我的persistence.xml中,以确保预加载为真:
<property name="openjpa.MetaDataRepository" value="Preload=true" />
感谢所有回答这个问题的人 我在Student类中指定表名为Students,因此我的查询在Student中搜索没有任何意义@Table(name=“Students”)公共类Student{JPQL不是SQL。JPQL将类映射到表中,在JPQL查询中,您引用的是类名而不是表名。@AdamLesiak如果我将Students更改为Studenthave您从查询中删除了单词“as”?as没有错,它只是不需要,但可以用于澄清代码。(在一个朋友给我的JPA课程中发现)错误(
选择e学生作为e
)和代码(选择e学生作为e
)不一致。用你的实际情况重写你的帖子doing@DN1更新了,没有更改问题更新了什么?!你说你正在执行SELECT e FROM Student as e
,但实际上你正在执行SELECT e Student as e
(这是非法语法,原因是错误消息说的).你还说你正在使用Hibernate(标签),但错误信息是OpenJPA!!!至于你为什么要“从google/stackoverflow中学习[JPA]”当有很多教程和文档的时候…它开始是从google/stackoverflow学习,现在使用的是一本friends,uni book。书名是JPA/Hibernate,所以我认为我使用的是Hibernate。不必这么直截了当,谢谢你的回复问题已经解决了@DN1
<property name="openjpa.MetaDataRepository" value="Preload=true" />