java - 在普通 Java 类中获取 EntityManager

标签 java class entitymanager

如何在普通的 java 类中获得实体管理器?我尝试了注入(inject),但没有任何结果,我总是得到一个 NullPointerException:

public class ClassName {

    @PersistenceContext(unitName = "myPU")
    public EntityManager em;

    @Resource
    UserTransaction utx;

...

然后我用一个提供EntityManagerFactory的单独的类尝试了它,也没有成功,抛出了NullPointerException:

public class HibernateUtil {

    private static EntityManagerFactory entityManagerFactory = null;
    static {
        try {
            entityManagerFactory = Persistence.createEntityManagerFactory("myPU");
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

    public static EntityManagerFactory getEntityManagerFactory() {
        return entityManagerFactory;
    }
}

感谢您的帮助。

最佳答案

public class ClassName {

    @PersistenceContext(unitName = "myPU")
    public EntityManager em;

    @Resource
    UserTransaction utx;

如果不在 Java EE 容器内运行,则此处没有 Dependency.Injection。 这些属性为空。您需要首先初始化它们(或者添加 spring 或其他 DI 容器)。

关于java - 在普通 Java 类中获取 EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9978258/

相关文章:

java - 具有多个数据源的 Spring Boot @Transactional 属性

java - 如何在 Java Junit 中测试异常

c++ - C++ 中的全局对象表示重复符号

java - JPA EclipseLink 添加/更新实体

java - 在每 100 行 10 000 上使用 flush() 方法会减慢事务

java - 从 Java 访问 Kotlin 类对象

java - 哪些语言可以很好地替代 Java?

java - Jersey 客户端响应字符串编码

python - 重用 dict 的特征而不是类似 dict 的特征是 pythonic 吗?

datasource - JBoss Wildfly 9 - 多个数据源和持久性单元