JPA createQuery / TypedQuery,没有识别我的表

时间:2018-04-27 11:36:45

标签: hibernate jpa

这是我打电话的功能:

    public List<Student> getAllStudents() {
        TypedQuery<Student> query = entityManager.createQuery("SELECT e FROM Student as e", Student.class);
        List<Student> students = query.getResultList();

        return students;
    }

这是我的学生班:

@Entity
@Table(name = "Students")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(unique = true)
    private String studentNumber;
    private String firstName;
    private String lastName;
    private boolean uploaded;
    private boolean downloaded;
    private boolean active;

    // Default constructor
    public Student() {

    }
}

问题解决了!感谢帮助的人,仍然是一个新人,并犯了一些愚蠢的错误!

2 个答案:

答案 0 :(得分:1)

您的查询应如下所示: “选择e FROM Student e”

请注意,该实体是单数(不是学生),您需要广告“FROM”,而且您不需要包含“AS”这个词。

我从本教程中学习了JPA:https://docs.oracle.com/javaee/7/tutorial/partpersist.htm#BNBPY

您可以在此处查看JPQL示例: https://docs.oracle.com/javaee/7/tutorial/persistence-querylanguage002.htm#BNBRG

答案 1 :(得分:0)

所以我解决了这个问题。

代码本身是正确的,然而Intellij使用了错误的标准JPA Framework配置。在实施正确的错误后,所有错误都消失了。

我改变的另一件事是将此行添加到我的persistence.xml中,以确保preload为true:

<property name="openjpa.MetaDataRepository" value="Preload=true" />

感谢所有回复此问题的人!