Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么OpenJPA不能将带有JAXB对象的字段识别为持久状态?_Java_Openjpa - Fatal编程技术网

Java 为什么OpenJPA不能将带有JAXB对象的字段识别为持久状态?

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

我希望将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.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。在此期间,我再次构建并运行了应用程序,它突然工作了