java - 无法检索 unitName 的 EntityManagerFactory

标签 java maven jpa persistence

当我尝试到达特定端点时,出现异常,提示“无法检索 unitNameparent_module 的 EntityManagerFactory”

但是,由于我在模块上构建了项目,因此出现此错误。当我将所有内容都放在父模块中并将包装标签设置为 war 时,它可以正常工作,没有任何错误。

当我在模块上构建项目,并将父包装标签设置为 pom,将子模块设置为 war 时,我开始出现所描述的异常。

请注意,我的 persistence.xml 位于正确的路径中。

CHILD_MODULE/src/main/resources/META-INF/persistence.xml

无论如何,配置应该是好的,只要我在父模块中移动文件时它可以完美地工作。

执行时,persistence.xml 存在于目标文件夹中。

我尝试像 @PersistenceContext(unitName = "parent_module") 一样注释 EntityManager,但我得到了相同的异常。

持久性.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             version="2.0"
             xmlns="http://java.sun.com/xml/ns/persistence"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="parent_module"
                      transaction-type="JTA">
        <jta-data-source>jdbc/postgres.myproject</jta-data-source>
        <mapping-file>META-INF/core-entity-mappings.xml</mapping-file>
    </persistence-unit>
</persistence>
public abstract class AbstractAccessBA {

    @PersistenceContext
    protected EntityManager entityManager;
    /**
     * Flush all changes from the entity manager to the database
     */
    public void flush() {
        entityManager.flush();
    }
}
public class WorkAccessBA extends AbstractAccessBA {

    @Inject
    private WorkMapper workMapper;
    /**
     * Finds all the entries
     * @return a list of workBE
     */
    public List<WorkBE> findAll() {
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<WorkBE> cq = cb.createQuery(WorkBE.class);
        Root<WorkBE> rootEntry = cq.from(WorkBE.class);
        CriteriaQuery<WorkBE> all = cq.select(rootEntry);
        TypedQuery<WorkBE> allQuery = entityManager.createQuery(all);
        return allQuery.getResultList();
    }

它应该返回所有找到的结果的列表(同样,如果我移动父模块中的所有文件,这会起作用),但是当我移动文件时(子模块中的配置,它有一个包装标签“war” ",它返回给我所描述的错误。

“无法检索unitNameparent_module的EntityManagerFactory”

最佳答案

我自己找到了答案。问题出在 glassfish/domains/nameOftheDomain/applications

在使用父子模块构建应用程序之前,我使用了parent_module SNAPSHOT 将其部署为war。

关于java - 无法检索 unitName 的 EntityManagerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037130/

相关文章:

java - 在通知点击时恢复辅助 Activity ,计时器仍在运行

java - 如何包含同级项目中的 GWT 模块?

java - 如何在JPA/DB2中动态添加Where条件

java - 从 Excel 文件的单元格获取值不起作用

java - Android onCreate 在手机重启后调用两次,使fragment停止工作

java - CXF 提供静态 html

maven - 将 maven nexus repo 添加到我的 pom.xml

maven - 可以将Ceylon与Maven和/或Gradle和/或SBT一起使用吗?

java - Google 应用引擎的 gradle 单元测试在哪里期望 persistence.xml?

spring - 启用 Spring Repositories cvc-complex-type.2.4.c :The matching wildcard is strict, 但找不到元素 jpa:repositories 的声明