jpa - 从 Java 10.0 NullPointer 开始搜索持久性 - JPA eclipselink 2.6.5
问题描述
我将一些带有 eclipselink 2.6.5 的 EJB 实体用于 Rest 服务(TomEE 服务器中的 Jersy)。
使用 jdk-1.8 可以正常工作,但是使用新的 jdk-10.0 现在我在搜索持久性时遇到了 NullPointerException。
我的 JPA 环境中是否存在错误或不匹配?
谢谢
史蒂芬
Exception in thread "main" Local Exception Stack:
Exception [EclipseLink-30005] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: jdk.internal.loader.ClassLoaders$AppClassLoader@41906a77
Internal Exception: java.lang.NullPointerException
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:127)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:115)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:188)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at de.company.test.simulation.session.MySimulationService.<init>(MySimulationService.java:50)
at de.company.test.simulation.controller.MyController.<init>(MyController.java:81)
at de.company.test.simulation.MySimulationLauncher.main(MySimulationLauncher.java:156)
Caused by: java.lang.NullPointerException
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:2030)
at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.callPredeploy(JPAInitializer.java:100)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:104)
我的 persitence.xml
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" version="2.1">
<persistence-unit name="myUnitName" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>de.company.test.simulation.entities.ProjectEntity</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://mysql.mediatransfer.de/dbName?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" />
<property name="javax.persistence.jdbc.user" value="userName" />
<property name="javax.persistence.jdbc.password" value="****" />
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="none" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
<property name="eclipselink.logging.level" value="SEVERE" />
</properties>
</persistence-unit>
这是我的 Web 应用程序 ProjectEntity 中的一个实体示例。这在 java 1.8 中对我来说很好。
@Entity(name = "ProjectEntity") @Table(name = "项目") 公共类 ProjectEntity 实现可序列化 { @ID @GeneratedValue(策略 = GenerationType.IDENTITY) @Column(名称=“id”,可空=假,唯一=真,可更新=假) 私人整数 id; @Column(name = "project_name", nullable = false, length = 256) @NotNull 私有字符串项目名称; 公共项目实体(){} // ..
解决方案
在我遇到同样的问题后,升级到 EclipseLink 2.7.3 为我解决了这个问题。
推荐阅读
- cascade - 是否可以从现有的 xml 文件中训练一个新的级联分类器
- javascript - 使用forEach访问数组内的对象值?
- python - python date unix 1 day 丢失
- angular6 - Angular 6:我如何使用 jspdf-customfonts
- git - 如何在 TFS 中创建新分支(git)时复制分支策略
- google-apps-script - 谷歌应用脚本 - OCR 拉谷歌登录页面而不是我需要的内容
- python - Python 3.7:将具有不同时区的字符串转换为日期
- python - 无法比较类型 'ndarray(dtype=int64)' 和 'int64'
- c - 为什么指针与下一个内存位置有 12 个差异
- sql - 如何删除字符串中的数字但保留postgresql中的空格?