尝试将实例强制转换为 PersistenceCapable 失败。确保它已得到增强

2024-06-28

我第一次尝试 OpenJPA 2.0.1,并得到:

79  WARN   [main] openjpa.Runtime - The configuration property named "openjpa.Id" was not recognized and will be ignored, although the name closely matches a valid property called "openjpa.Id".
179  INFO   [main] openjpa.Runtime - Starting OpenJPA 2.0.1
371  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.PostgresDictionary" (PostgreSQL 8.4.4 ,PostgreSQL Native Driver PostgreSQL 9.0 JDBC4 (build 801)).
<openjpa-2.0.1-r422266:989424 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance "x.quality.QualityQuery@4c4b11e9" to PersistenceCapable failed.  Ensure that it has been enhanced.
FailedObject: x.quality.QualityQuery@4c4b11e9
    at org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4559)
    at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2561)
    at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2423)
    at org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1069)
    at org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:706)
    at ...

根据OpenJPA 文档 http://openjpa.apache.org/builds/2.0.1/apache-openjpa-2.0.1/docs/manual/ref_guide_pc_enhance.html#ref_guide_pc_enhance_runtime,我不需要做任何事情来在运行时获得基本的增强:

2.5.省略 OpenJPA 增强器

OpenJPA 不要求 运行增强器。如果您不运行 增强器,OpenJPA 将回退到 几种可能的替代方案之一 对于状态跟踪,取决于 执行环境。

Java 6 类 重新改造:

如果你正在跑步 Java 6 中的应用程序 环境中,OpenJPA 将尝试 动态注册一个 将重新定义的ClassTransformer 您持续不断的课程 跟踪对持久数据的访问。 此外,OpenJPA 将创建一个 你的每个持久化的子类 类。当您执行查询或 遍历一个关系,OpenJPA 将 返回子类的实例。 这意味着instanceof 运算符将按预期工作,但是 o.getClass() 将返回子类 而不是你写的类。 您根本不需要做任何事情 得到这种行为。 OpenJPA 将 自动检测是否 执行环境有能力 Java 6 类的重新转换。

有任何线索说明为什么这不起作用吗?非常感谢...

(为什么会发生 openjpa.Id 警告的奖励积分 - 我没有设置任何此类属性......)


啊哈,原来答案是传入:

"openjpa.RuntimeUnenhancedClasses" => RuntimeUnenhancedClassesModes.SUPPORTED

到配置图。为什么没有更清楚地记录这一点,我不确定......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试将实例强制转换为 PersistenceCapable 失败。确保它已得到增强 的相关文章

  • 记录所有 presto 查询

    如何将提交到 presto 集群的所有查询存储在文件 ORC 文件 或其他数据库中 目的是保存在 presto 工作线程上执行的所有查询的记录 我知道我需要覆盖 queryCompleted 方法 我也尝试遵循this https grou
  • 如何删除 JComboBox 的“单击并查看下拉菜单”功能?

    我有一个 JComboBox 它使用 GlazedLists 添加预输入功能 我希望用户输入一个字符串并看到预先输入的内容 这要归功于 Glazedlists 但是 我不希望用户能够单击组合框的向下箭头并检查下拉列表 我已使向下箭头不可见并
  • 重启设备后,频繁发送短信就是开机时多发一次短信

    我经常发送短信 在重新启动设备时再次发送短信 同时我们也 打开 之后 它发送短信的时间间隔是正确的 但是当我们打开设备时 它会再次发送短信 public class BootCompletedIntentReceiver extends B
  • 在 Android 的视图中创建透明的圆形切口

    我正在尝试创建一个半透明的帮助叠加层 以便在用户首次打开应用程序时显示在我的活动的主屏幕上 我想通过 剪切 与按钮位置相对应的覆盖层部分来突出显示主布局中包含的按钮 并使用 setContentView 进行膨胀 并使剪切部分透明 覆盖层是
  • 如何将 Postgres inet 数据类型与 OpenJPA 结合使用?

    我需要使用 OpenJPA 2 2 2 在 Postgres 9 0 表中记录 IP 地址 我已经使用本机查询让它工作 EntityManager entityManager entityManagerFactory createEntit
  • 在连续 8 个测量到的 GC 抖动周期后关闭 JVM

    我正在编写 Apache beam BAtch 数据流 其中从 GCS 写入到 BQ 我的数据包含400万条记录 我已指定n1 HighMem 8机器类型 我的数据流以少量数据形式工作 我的用例我的模式不固定 所以我使用了 getFaile
  • 如何在JNA中填充结构体数组?

    我正在尝试在 JNA 中使用以下 Windows API UINT WINAPI GetRawInputDeviceList Out opt PRAWINPUTDEVICELIST pRawInputDeviceList Inout PUI
  • 模块化应用程序堆栈中的虚拟数据和单元测试策略

    如何管理用于测试的虚拟数据 将它们保留在各自的实体中 在一个单独的测试项目中 使用外部资源的序列化程序加载它们 或者只是在需要的地方重新创建它们 我们有一个应用程序堆栈 其中包含多个模块 这些模块依赖于另一个模块 每个模块都包含实体 每个模
  • 如何重写 Lombok Setter 方法

    我在我的项目和生成中使用 lombokSetters and Getters using Setters and GettersPOJO 类之上的注释 我正在尝试覆盖属性的 setters 方法 但它不起作用 我想检查 JSON 属性是 E
  • 如何对文本文件执行二分搜索

    我有一个大文本文件 5Mb 我在 Android 应用程序中使用它 我将文件创建为预先排序的字符串列表 并且文件一旦创建就不会更改 如何对此文件的内容执行二分搜索 而不需要逐行读取来查找匹配的字符串 由于文件的内容不会改变 因此您可以将文件
  • 获取Java InputStream后面的文件的字节数

    正如标题所示 我需要知道文件在输入流 后面 有多少字节 我不想下载所有字节和计数 需要很长时间 我只需要知道文件有多少字节 像这样 int numberOfBytes countBytes inputStream 所以 我需要 countB
  • 无法远程连接JMX?

    由于某些奇怪的原因 我无法使用VisualVM or jconsole到 JMX 用于启动要监控的VM的参数 Dcom sun management jmxremote Dcom sun management jmxremote authe
  • 将一串数字转换为数组

    我在创建将数字字符串转换为数组的程序时遇到问题 我知道这里有一个类似的问题 但我所要做的只是一组数字 例如 10 15 16 0 57 438 57 18 这是我到目前为止所拥有的 import java util Scanner publ
  • Java可以用来写Win32系统服务吗?

    标题有点概括了 我正在考虑使用Jabaco http www jabaco org因为它生成 EXE 以及 jar 文件 而且我对 VB 语法比对 Java 更熟悉 你当然可以用Java 服务包装器 http wrapper tanukis
  • 将 float 转换为 Short,精度损失最小[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个生成浮点值 例如 0 37885 的正弦波 但我希望它们作为短裤 直接使用 Short 进行转换 得到的值为 0 那么解决方案是什么
  • 当生成 Apache CXF 客户端时,为什么在实例化客户端时仍然需要 WSDL?

    我想要使 用 SOAP 服务 但 WSDL 是离线提供给我的 因此导致使用 WSDL 的本地路径生成客户端 public class SoSo extends Service public final static URL WSDL LOC
  • FlyingSaucer renderer.setDocument 抛出“流已关闭”异常

    我在使用找到的简单示例创建 PDF 时遇到问题here http today java net pub a today 2007 06 26 generating pdfs with flying saucer and itext html
  • 从批处理文件运行 .jar

    我已经创建了一个可执行文件 jar文件 我怎样才能执行 jar使用批处理文件而不提及类路径 在 Windows 上 您可以使用以下命令 start javaw jar JarFile jar 通过这样做 命令提示符窗口不会保持打开状态
  • 使用递归求数字之和

    对Java来说相当陌生 但我正在编写一个教程 其中我必须使用递归找到用户输入整数的数字总和 到目前为止 这是我的代码 公开课其他 public static void main String arg Scanner s new Scanne
  • 使用 Jackson 反序列化非字符串映射键

    我有一张如下所示的地图 public class VerbResult JsonProperty similarVerbs private Map

随机推荐