我的应用程序中使用的JPA实现是Kodo。
尝试查询数据库中的实体时,出现了这个非常奇怪的异常:

org.apache.openjpa.persistence.ArgumentException:未找到类型为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.enroll .SecretUserQuestion,com.rsa.idv.ims.enroll.Enrollment]。

请考虑到,AddressUS类实际上不在列表中,而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可以正常工作一会儿,然后开始为某些表生成无效查询。似乎类或数据库元数据已损坏。发生问题后,将生成无效的查询。

您是否有有关此问题的新信息?

08-17 19:47