使用Websphere Liberty JPA(EclipseLink)存储XML DB2数据类型

时间:2017-02-14 09:36:14

标签: xml jpa db2 eclipselink websphere-liberty

我正在尝试使用Websphere Liberty中的JPA保存和检索数据库行。 数据库引擎是DB2,该表具有XML数据类型列,并且此列在JPA中映射为String。 这在OpenJpa中运行良好,但转移到EclipseLink会导致检索到null String。请注意,保存操作效果很好,只有在读取操作期间才存在问题。

@Entity
@Table(name="DATASET")
@NamedQueries( {
@NamedQuery(name = "DataSet.findByNameId", query = "SELECT ds FROM DataSet AS ds WHERE ds.name = :name")
 })
public class DataSet implements Serializable {
 ...
  @Column(name="DATASETDEF", unique=false, nullable=true)
  private String datasetDef;

 public static DataSet findByName(EntityManager em, String datasetName) {
    Query q = em.createNamedQuery("DataSet.findByNameId");
    q.setParameter("name", datasetName);
    DataSet dataset = (DataSet)q.getSingleResult();
    System.out.println("-->" + dataset.getDatasetDef()); // <-- THIS IS NULL
    return dataset;
 }

我激活了EclipseLink日志,并且正确执行了查询,包括XML字段:

eclipselink I CWWJP9990I: EclipseLink, version: Eclipse Persistence Services - 2.6.3.WAS-  v20160817-8475a53
eclipselink.sql 3 SELECT DATASETID, DATASETDEF, DESCRIPTION, NAME, UPDATEFREQUENCY FROM UCC.DATASET WHERE (NAME = ?)
bind => [VEHICLE]
SystemOut  O -->null

我发现使用Postgresql也会出现类似的问题: Using EclipseLink JPA to store XML type to PostgreSQL或使用Oracle:Mapping Oracle XMLType on JPA (EclipseLink)
处理这个问题的正确方法是什么?

0 个答案:

没有答案