EclipseLink添加转换器会间歇性导致ValidationException
我第一次使用EclipseLink构建一个新的应用程序 一切都很顺利,直到我添加了一个使用JSR310 Instant作为时间戳列的实体 因此,我创建了一个转换器类,并将其映射到相关字段,如下所示:EclipseLink添加转换器会间歇性导致ValidationException,eclipse,jpa,eclipselink,Eclipse,Jpa,Eclipselink,我第一次使用EclipseLink构建一个新的应用程序 一切都很顺利,直到我添加了一个使用JSR310 Instant作为时间戳列的实体 因此,我创建了一个转换器类,并将其映射到相关字段,如下所示: @Convert(converter = JSR310InstantTypeConverter.class) private Instant pwdChangeCodeExpiresOn = null; 但是,自从我添加该转换器后,应用程序已开始引发以下异常: SEVERE: Servlet.
@Convert(converter = JSR310InstantTypeConverter.class)
private Instant pwdChangeCodeExpiresOn = null;
但是,自从我添加该转换器后,应用程序已开始引发以下异常:
SEVERE: Servlet.service() for servlet [APIJerseyServlet] in context with path [/Sclera] threw exception [org.glassfish.jersey.server.ContainerException: java.lang.ExceptionInInitializerError] with root cause
Local Exception Stack:
Exception [EclipseLink-7351] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.ValidationException
Exception Description: The converter class [com.sclera.utils.JSR310InstantTypeConverter] specified on the mapping attribute [pwdChangeCodeExpiresOn] from the class [com.sclera.entity.Admin] was not found. Please ensure the converter class name is correct and exists with the persistence unit definition.
at org.eclipse.persistence.exceptions.ValidationException.converterClassNotFound(ValidationException.java:2317)
at org.eclipse.persistence.internal.jpa.metadata.converters.ConvertMetadata.process(ConvertMetadata.java:248)
这将在代码更改后开始(当Eclipse重新启动服务器时)。我必须手动停止和启动(和/或重新启动)服务器几次,直到它最终重新开始工作。然后,它将正常工作,直到一两次代码更改之后,它将再次开始抛出异常
这是一个巨大的痛苦。有人知道原因以及如何修复吗?好的,找到了解决方案。将转换器类添加到persistence.xml文件(如错误消息所示)似乎解决了问题
<persistence-unit name="example" transaction-type="RESOURCE_LOCAL">
....
<class>com.example.utils.JSR310InstantTypeConverter</class>
...
</persistence-unit>
....
com.example.utils.JSR310InstantTypeConverter
...
我应该早点试试。事实上,有些时候没有这个功能也能正常工作,这让我觉得没有什么区别。似乎我们在阅读错误消息之前先去谷歌看看。。。我也这么做了。在我们的辩护中,异常呕吐时间很长。还要确保使用了
@Converter
。