当前位置: 首页 > 知识库问答 >
问题:

在JAR库中注入PersistenceContext

况胡媚
2023-03-14

在包含DAO的第三部分jar库中,我在使用@PersistenceUnit注入EntityManagerFactory时遇到问题。

这是我的多模块maven项目结构。

-EAR
 \-WAR ==> the webapp (maven type war)
  \-EJB ==> the service facade (maven type EJB (provided to War)
   \CORE ==> the legacy DAO's library (maven type JAR)

我用CDI把所有的东西连接起来==

但是当我把@PersistenceUnit注释放在核心项目中时,它就不起作用了。(该字段为空)

当我在EJB项目中使用@PersistenceUnit时,一切正常。

我的坚持。xml文件位于EJB项目的META-INF文件夹下(但我也试图将其放入核心项目中,但没有成功)。

以下是注射点:

public class HibernateSupport {

@PersistenceUnit
private EntityManagerFactory emf;

...
}

这个类被注入到带有CDI的EJB项目中(它可以工作...但是emf字段为null...)

有人能帮我吗?

编辑:

如果我把我的核心项目变成一个EJB项目(maven类型ejb)。然后它就工作了...但是我希望我的核心项目仍然是一个POJO项目...

编辑2:

生产商代码:

@PersistenceUnit
private EntityManagerFactory emf;

@Produces 
public SessionFactory getSessionFactory() {
    return ((HibernateEntityManagerFactory)emf).getSessionFactory();
}

共有2个答案

蒋弘致
2023-03-14

尝试以这种方式更改您的代码片段:

public class HibernateSupport {

@PersistenceUnit
private EntityManager em;

 ...
}
伯逸明
2023-03-14

使用annotation@PersistenceUnit只能注入EJB。您的HibernateSupport不是EJB。所以,为了解决这个问题,您需要:

  • 使HibernateSupport成为EJB

或者

  • InjectEntityManager使用@Inject,在这里阅读如何执行
 类似资料:
  • 请原谅我对Java导入的困惑--我来自Python背景。 然而,Eclipse仍然给出Document对象、DocumentException和FileNotFound异常对象的红色下划线错误。我有权从itextpdf中导入Document类,但我的通配符语句似乎已经涵盖了这一点。有事吗?

  • 我有一个正在使用jar的项目a,比如(其中B是在项目a中用作依赖项的另一个项目),现在有一个(类似于缓存),它在映射中保存所需的所有数据。这个映射bean被project(在我的项目中作为包含)使用,即B来读取缓存属性,但我无法这样做,有什么帮助吗? 项目B的webapp-config.xml 上面的bean b2必须在外部项目B中使用(作为jar包含在我的项目A中)。 但我得到了 任何帮助都将不

  • 我正在用Symfony制作简单的应用程序。我在这里配置了服务 我的服务使用存储库(例如,评论服务使用评论存储库),这里是的构造函数 性质 构造函数: 当我试图运行我的应用程序我得到这个错误 PHP致命错误:未捕获Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:无法自动连线服务“AppBundle\R

  • 我有一个运行大型企业应用程序的场景。 我有一个没有@SpringBootApplication的应用程序,叫做XYZ应用程序。应用程序没有在ABC应用程序中自动连接,ABC应用程序有@SpringBootApplication,我在Intellij中运行它。如何确保在运行应用程序时创建bean 注意:我将XYZ应用程序的JAR作为渐变版本。XYZ api和XYZ impl有单独的JAR。 我得到的

  • 问题内容: 我在Java项目中添加了一些外部库(在netbeans中)。 是否可以将外部jar库放入Java存档(而不是将其放入单独的(例如)“ lib”目录)? 问题答案: 当然可以。可以使用包含所有依赖项的“捆绑罐”下载一些开源项目。 您需要提取所有jar,然后将其再次打包到一个文件中。在此处 可以看到使用Ant进行此操作的示例。

  • 你好, 我试图将jtwitter jar添加到我的项目中。 首先,我试着做了以下几点: