gpt4 book ai didi

java - 为什么 OpenJPA 无法将具有 JAXB 对象的字段识别为持久状态?

转载 作者:行者123 更新时间:2023-12-01 04:24:54 26 4
gpt4 key购买 nike

我想将 JAXB 对象的 XML 保留在所属实体表的 CLOB 列中。 OpenJPA 使用其 XMLValueHandler 提供对此类构造的支持。 .

我关注了this tutorial来自 IBM。

我的示例代码是:

@Entity
@Access(AccessType.FIELD)
public class EntityContainingXml {

@Id
private Long id;

@Persistent
@Strategy("org.apache.openjpa.jdbc.meta.strats.XMLValueHandler")
@Column(name = "xml")
@Lob
private SomeJaxbType xmlStuff;
//...
}

但是,OpenJPA 增强器不会将字段 xmlStuff 识别为持久状态。如果 SomeJaxbType 包含在持久性单元中,则不会进行更改。

我需要做什么才能让 OpenJPA 增强器将字段 xmlStuff 识别为持久状态?

最佳答案

问题是由于 Maven 依赖关系导致的类路径问题。我不能说到底是什么导致了这个问题。原始类路径包含 org.apache.openjpa 工件 openjpa-persistence-jdbc、openjpa-persistence、openjpa 和 openjpa-all 的某些组合。这导致在构建时间增强期间使用 org.apache.openjpa.persistence.PersistenceMetaDataFactory 。但是此工厂创建的解析器 org.apache.openjpa.persistence.AnnotationPersistenceMetaDataParser.AnnotationPersistenceMetaDataParser 无法识别 @Strategy

现在只有 openjpa-persistence-jdbc 用作编译时依赖项。并且构建时间增强依赖于工件 openjpa。

我通过 Maven 构建进行调试以找出答案。就我而言,无法使用配置属性 openjpa.MetaDataFactory 来设置适当的元数据工厂,因为它导致了类转换异常。然后我开始抛弃 OpenJPA。在此期间,我再次构建并运行了该应用程序,它突然开始工作了。

关于java - 为什么 OpenJPA 无法将具有 JAXB 对象的字段识别为持久状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com