gpt4 book ai didi

java - em.createQuery 一直返回 null

转载 作者:行者123 更新时间:2023-11-30 11:43:43 24 4
gpt4 key购买 nike

我有这个应用程序,我使用 JSF 2.0 和 EclipseLink,我有为 MySQL 中的数据库创建的实体,使用 netbeans 7.1.2 创建这些实体,它会自动创建。

然后我使用 session bean 来处理这些实体,问题是 em.createQuery 总是返回 null,尽管我检查了实体中的 NamedQueries 并且它们完全匹配

来自名为查询的实体的示例:-

@NamedQueries({
@NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"),
@NamedQuery(name = "Users.findByUserId", query = "SELECT u FROM Users u WHERE u.userId = :userId"),
@NamedQuery(name = "Users.findByUsername", query = "SELECT u FROM Users u WHERE u.username = :username"),
@NamedQuery(name = "Users.findByEmail", query = "SELECT u FROM Users u WHERE u.email = :email"),

注意我是如何在 session bean 中使用这个 findByEmail 查询的:-

public Users findByEmail(String email){
em.getTransaction().begin();
String find = "Users.findByEmail";
Query query = em.createNamedQuery(find);
query.setParameter("email", email);
Users user = (Users) query.getSingleResult();

但它总是从这个 em.createNamedQuery 返回 null,我首先尝试使用 .createQuery 但它也不好。

异常的堆栈跟踪

Caused by: java.lang.NullPointerException
at com.readme.entities.sessionBeans.UsersFacade.findByEmail(UsersFacade.java:48)
at com.readme.user.signup.SignupBean.checkAvailability(SignupBean.java:137)
at com.readme.user.signup.SignupBean.save(SignupBean.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)

这似乎是什么问题?

最佳答案

如果在您的情况下 em.createNamedQuery(find) 确实是抛出 NullPointerException 的语句,那么就会发生一些相当奇怪的事情。

当您第一次在 em.getTransaction().begin() 中使用 em 引用时,很可能会抛出 NullPointerException。如果是这样,那么一个很常见的原因是你的实体管理器没有被注入(inject),因为注入(inject)只在托管类中起作用(详情请引用 this question )。如果您通过新操作创建了 session bean,则它不受管理。

其他常见原因是@Persistenceontext 注释完全丢失。

关于java - em.createQuery 一直返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com