我目前正在开发一个基于 WebSphere Application Server 7 和 DB2 Spatial Extender 的应用程序,并且我想将 JPA 用于数据访问层。
我在我的数据库中设置了一个非常简单的表用于测试目的:
JMTEST (id integer | position db2gse.st_point)
挑战是将位置列 (db2gse.st_point) 映射到我的 JPA 实体的字段
到目前为止,我发现的唯一可行的解决方案是使用 Hibernate 作为 JPA 实现,以便我可以使用 @ColumnTransformer 注释:
@Entity
@NamedQuery(name = "getAllRecords", query = "SELECT j FROM Jmtest j")
public class Jmtest implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@ColumnTransformer(read="db2gse.ST_AsText(position)",write="db2gse.ST_PointFromText(?,1003)")
private String position;
由于我使用的是 WebSphere 7,它带有 JPA 1.0 和 IBM 或 OpenJPA 实现。不幸的是,恐怕我将不得不坚持这些(不可能使用 JPA 2.0,也不可能使用替代的 JPA 提供程序)
我在 IBM 或 OpenJPA 实现中找不到与 @ColumnTransformer 等效的东西。如果存在,有人可以向我解释我应该使用什么吗?
如果没有,您能否就如何使用 IBM/OpenJPA 实现将 DB2Spatial 列映射到 JPA 实体字段给我一些建议?
提前谢谢了。