Java 为什么OpenJPA不能将带有JAXB对象的字段识别为持久状态?
我希望将JAXB对象的XML持久化在拥有实体的表中的CLOB列中。OpenJPA使用its提供了对此类构造的支持 我是IBM的 我的示例代码是:Java 为什么OpenJPA不能将带有JAXB对象的字段识别为持久状态?,java,openjpa,Java,Openjpa,我希望将JAXB对象的XML持久化在拥有实体的表中的CLOB列中。OpenJPA使用its提供了对此类构造的支持 我是IBM的 我的示例代码是: @Entity @Access(AccessType.FIELD) public class EntityContainingXml { @Id private Long id; @Persistent @Strategy("org.apache.openjpa.jdbc.meta.strats.XMLValueHa
@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持久化jdbc当前用作编译时依赖项。构建时增强依赖于工件openjpa
我通过maven构建进行了调试,以找到答案。在我的例子中,无法使用configuration属性openjpa.MetaDataFactory
来设置适当的元数据工厂,因为它导致了类强制转换异常。然后我开始扔掉OpenJPA。在此期间,我再次构建并运行了应用程序,它突然工作了