JPA:无法解析JavaSE中的显式命名的映射文件

时间:2018-11-28 22:05:53

标签: java hibernate jpa

我正在制作一个小程序,用于将数据从我们不拥有的另一个系统迁移到我们在公司内部制作的自定义系统。我在Maven中使用IntellJ,但是在构建后该错误似乎来自目标文件夹,因为它似乎找不到该文件夹​​,并且当我在其中浏览时,Intellij给我一个错误。

src /中的

persistence.xml我削减了一点,所以我不会用大图像夸大此帖子。 Persistence.xml in src/

这是编译后输出的一小幅屏幕截图,您可以看到文件位于它们所属的位置。

Output after compile

当我检查文件夹中的persistence.xml时,Intellij在这里说文件无法解析。

target folder persistence.xml

这不是这些xml文件的原始位置,因为它们是由IDE在包edu.apde.f5.model。$ project中生成的,起初它们没有包含在构建中,所以我将它们移到了资源/ META-INF / etc路径,并且它们出现了,但是它仍然给出相同的错误。还尝试使用META-INF / $ project-mapping路径,但仍然没有。

在输出中收到错误,这是我尝试运行项目后遇到的错误,当我调用实体管理器并调用“ MsSchoolPersistenceUnit”时会发生这种错误

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.hibernate.boot.MappingException: Unable to resolve explicitly named mapping-file : src/main/resources/META-INF/msschool-mapping/ScReligion.xml : origin(src/main/resources/META-INF/msschool-mapping/ScReligion.xml)
at org.hibernate.boot.model.process.internal.ScanningCoordinator.applyScanResultsToManagedResources(ScanningCoordinator.java:214)
at org.hibernate.boot.model.process.internal.ScanningCoordinator.coordinateScan(ScanningCoordinator.java:82)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.prepare(MetadataBuildingProcess.java:99)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:232)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:174)
at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:76)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:171)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:119)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:61)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:50)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at edu.apde.f5.util.EntityManagerUtil.getEntityManager(EntityManagerUtil.java:12)
at edu.apde.f5.data.msschool.AlumnoRepository.fetchAll(AlumnoRepository.java:17)
at edu.apde.f5.main.Main.main(Main.java:10)
... 6 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

3 个答案:

答案 0 :(得分:0)

类路径需要指向src / main / resources / META-INF / msschool-mapping / ScReligion.xml的包含文件夹。

另一种选择是修改映射文件条目以指向相对于现有Classpath的文件。

另一种选择是为其提供文件的绝对路径。

答案 1 :(得分:0)

尝试将映射文件指向META-INF / msschool-mapping / ScFamiglia.xml

<mapping-file>META-INF/msschool-mapping/yourorms*.xml</mapping-file>

答案 2 :(得分:0)

我通过在每个Name标签的src前面添加一个前导“ /”来解决了这个问题。