使用带有 RuntimeUnenhancedClasses 的 OpenJPA 找不到类型的元数据

Posted

技术标签:

【中文标题】使用带有 RuntimeUnenhancedClasses 的 OpenJPA 找不到类型的元数据【英文标题】:No metadata found for type using OpenJPA with RuntimeUnenhancedClasses 【发布时间】:2011-04-30 03:28:04 【问题描述】:

我正在使用 JPA (OpenJPA)。我的persistence.xml 中有以下条目:

<property name="openjpa.RuntimeUnenhancedClasses" value="supported"/>

persistence.xml 中还列出了 Serviceoffering 类。 当我尝试运行与 JPA 相关的代码时,出现以下异常。可能是什么问题?

No metadata was found for type "class com.XYZ.cloud.bss.client.db.data.Serviceoffering".  Ensure that the class is enhanced (if necessary), that the class has appropriate metadata, and that if you list your persistent classes, the class is included in your list.
C = null
<openjpa-1.2.1-SNAPSHOT-r422266:686069 fatal user error> org.apache.openjpa.persistence.ArgumentException: No metadata was found for type "class com.XYZ.cloud.bss.client.db.data.Serviceoffering".  Ensure that the class is enhanced (if necessary), that the class has appropriate metadata, and that if you list your persistent classes, the class is included in your list.
    at org.apache.openjpa.meta.MetaDataRepository.getImplementorMetaDatas(MetaDataRepository.java:1108)
    at org.apache.openjpa.kernel.QueryImpl.createExecutor(QueryImpl.java:720)
    at org.apache.openjpa.kernel.QueryImpl.compileForDataStore(QueryImpl.java:692)
    at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:674)
    at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1492)
    at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:123)
    at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:243)
    at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:293)
    at c

【问题讨论】:

【参考方案1】:

&lt;class&gt;com.XYZ.cloud.bss.client.db.data.Serviceoffering&lt;/class&gt; 添加到您的persistence.xml 文件中,并确保在执行查询之前JVM 已加载Serviceoffering 类。

现在我要强烈建议不要设置&lt;property name="openjpa.RuntimeUnenhancedClasses" value="supported"/&gt;。是的,有一些支持,但这会让你很头疼。看看blog post 我很久以前写过关于增强过程的文章......这应该会让你滚动。

【讨论】:

以上是关于使用带有 RuntimeUnenhancedClasses 的 OpenJPA 找不到类型的元数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有或不带有 Appium 的 Robot Framework 集成 WinAppDriver?

使用带有 ajax Rest 调用的 Spring CSRF 和带有 Thymeleaf 的 HTML 页面

如何在带有 React 的 Typescript/JSX 中使用带有箭头函数的泛型?

优化数据库有啥更好的方法:使用带有不同过滤器的一堆存储过程,还是使用带有 if 条件的单个存储过程?

使用带有数据数组的 Yii2 和带有排序和过滤的 Gridview

使用 ORM,我可以将带有 a、b、c 列的 DB 表映射到带有带有键 a、b、c 的 Map 的类吗?