JPA读取XMLTYPE导致NullPointer

时间:2015-11-11 15:50:13

标签: java jpa eclipselink

您好我已经在eclipselink网站上提交了这个错误,但到目前为止还没有回复,我被卡住了。我希望有人知道解决方法或其他什么。 我有一个与其他表无关的单个实体。该实体正在映射oracle数据库中的现有表。

@Entity
@Table(name = "FIVERX_MUSTER16_PRUEFUNG")
@Customizer(XMLTypeAttributeCustomizer.class)
public class MYDATATABLE {

    ...
    @Lob
    @Column(name = "XML", columnDefinition = "XMLTYPE")
    private String xmlDocument;

    ...
}

我尝试了很多东西,但每次尝试在此表上执行选择时,eclipselink都会抛出NullPointerException

ERROR - EjbTransactionUtil.handleSystemException: null
java.lang.NullPointerException
    at oracle.jdbc.driver.NamedTypeAccessor.getOracleObject(NamedTypeAccessor.java:302)
    at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:164)
    at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:121)
    at oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java:1108)
    at org.eclipse.persistence.platform.database.oracle.Oracle9Platform.getObjectFromResultSet(Oracle9Platform.java:193)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.getObject(DatabaseAccessor.java:1302)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.fetchRow(DatabaseAccessor.java:1077)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.processResultSet(DatabaseAccessor.java:744)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:657)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:560)

如果我删除xmltype列,一切都按预期工作。如果我再次添加列 - >空指针...

这是我的XmlMapper,所以你可以看到我完全按照DirectXmlTypeMapping的教程告诉

import org.eclipse.persistence.config.DescriptorCustomizer;
import org.eclipse.persistence.descriptors.ClassDescriptor;
import org.eclipse.persistence.mappings.xdb.DirectToXMLTypeMapping;


public class XMLTypeAttributeCustomizer implements DescriptorCustomizer {

@Override
public void customize (ClassDescriptor descriptor) throws Exception {
    // Remove JPA default Basic mapping
    descriptor.removeMappingForAttributeName("xmlDocument");
    final DirectToXMLTypeMapping mapping = new DirectToXMLTypeMapping();
    mapping.setAttributeName("xmlDocument");
    mapping.setFieldName("XML");
    mapping.getField().setColumnDefinition("XMLTYPE");
    descriptor.addMapping(mapping);
}

}

有没有解决方法?我必须使用这个表,它不是唯一一个包含XMLTYPE列的表......我绝对没有想法......

1 个答案:

答案 0 :(得分:0)

问题是oracle jdbc驱动程序中的一个错误。问题已在版本11.2.0.4中修复