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 をサポートするための機能パックをインストールできます。

その後、Hibernate などのサードパーティの jpa プロバイダーを使用するように WAS を構成できます。

サード パーティ プロバイダーを使用しても機能パックがなくても機能しますが、jpa 1 を使用する古いバージョンにバインドされます。

于 2013-07-25T05:36:02.833 に答える
0

OpenJPA@Factoryに存在するおよび@Externalizerアノテーションを見てください。

于 2013-07-24T14:35:37.997 に答える