无法检索unitName的EntityManagerFactory

时间:2019-05-08 09:03:54

标签: java maven jpa persistence

当我尝试到达特定端点时,出现异常消息“无法为unitName parent_module检索EntityManagerFactory”

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

当我在模块上构建项目,并将父包装标签设为pom,将子包装标签设为war时,我开始遇到上述异常。

请注意,我在正确的路径中有persistence.xml。

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

无论如何,只要我将文件移动到父模块中,文件配置就可以正常工作。

persistence.xml在执行时出现在目标文件夹中。

我已经尝试过像@PersistenceContext(unitName =“ parent_module”)一样对EntityManager进行注释,但是我遇到了同样的异常。

persistence.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 ”,它会向我返回所描述的错误。

“无法为unitName parent_module检索EntityManagerFactory”

1 个答案:

答案 0 :(得分:0)

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

在使用父子模块构建应用程序之前,我曾使用过parent_module SNAPSHOT作为战争部署。