我的应用程序中使用的 JPA 实现是 Kodo。 当尝试在数据库中查询实体时,我得到了这个非常奇怪的异常:
org.apache.openjpa.persistence.ArgumentException:未找到类型“class com.verid.ims.model.AddressUS”的元数据。该类不会出现在持久类型列表中:[com.verid.ims.model.Birthdate、com.verid.ims.model.PersonName、com.verid.ims.model.AddressUS、 com.rsa.idv.ims.feedback.IMSFeedback,com.rsa.idv.ims.notification.IMSNotification,com.rsa.idv.ims.provider.IMSProvider,com.rsa.idv.ims.notification.NotificationEntry,com.rsa.idv.ims.notification.IMSNotification。 rsa.idv.ims.enroll.SecretUserQuestion,com.rsa.idv.ims.enroll.Enrollment]。
请考虑到,根据异常,AddressUS 类并未出现在持久类型列表中,但它实际上出现在列表中! (粗体)
AddressUS 类映射到我的 orm.xml 文件中(它不在 persistence.xml 描述符中,因为它不是实体,只是可嵌入的)。这是映射:
<embeddable class="com.verid.ims.model.AddressUS">
<attributes>
<basic name="city" />
<basic name="state">
<enumerated>STRING</enumerated>
</basic>
<basic name="street1" />
<basic name="street2" />
<basic name="zipcode" />
<basic name="suite" />
</attributes>
</embeddable>
不用说,persistence.xml 描述符指的是 orm.xml 文件。
该异常仅发生在某些环境(不是全部)上,这基本上意味着这是一个环境问题。可能是什么原因造成的?
最佳答案
我可以确认有同样的问题。但这是不一致的行为。应用程序工作正常一段时间(几天),然后突然出现这个问题。我们有集群,并且该问题仅发生在集群中的一台服务器上。
重新启动应用程序后,OpenJPA 再次正常工作。
我们还遇到这样的问题:OpenJPA 在某个时刻工作正常,然后开始为某些表生成无效查询。类或数据库元数据似乎在某个时刻已损坏。出现问题后,生成无效查询。
您有关于此问题的一些新信息吗?
关于java - JPA - "no Metadata found for type"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4327691/