1

我目前正在开发一个基于 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 实体字段给我一些建议?

提前谢谢了。

4

2 回答 2

0

实际上,您不受 JPA 1 的约束。您可以安装功能包以获得 JPA 2 支持。

之后,您可以将 WAS 配置为使用第三方 jpa 提供程序,例如 Hibernate。

使用第三方提供程序也可以在没有功能包的情况下使用,但是您必须使用 jpa 1 的旧版本。

于 2013-07-25T05:36:02.833 回答
0

查看OpenJPA中存在的@Factory和注释。@Externalizer

于 2013-07-24T14:35:37.997 回答