datanucleus-spatial プラグインで Datanucleus を使用しようとしています。マッピングに注釈を使用しています。PostGIS と Oracle Spatial の両方を試しています。datanucleus のチュートリアルに戻ります。私が経験していることは意味がありません。私の開発環境は、MAven 2.2.1 を使用した Netbeans 7.x (7.0、7.2、および 7.3 を試しました) です。http://www.datanucleus.org/products/datanucleus/jdo/guides/spatial_tutorial.htmlにある Datanucleus のチュートリアルで Position クラスを使用すると、Maven の依存関係に datanucleus-spatial プラグインを含めないと、 PostGISまたはOracleに問題なく接続し、データをコミットします。空間データはブロブとして保存されます(空間プラグインが存在しないため、これを期待していました)。PostGIS を使用すると、チュートリアルはうまく機能します。
org.postgis.Point クラスを oracle.spatial.geometry.JGeometry に置き換えて Position クラスを変更し、Oracle サーバーへの接続をポイントします。空間がない場合、ポイントはブロブとして保存されます。空間では、次の例外が発生します。
java.lang.ClassCastException: org.datanucleus.store.rdbms.datasource.dbcp.PoolingDataSource$PoolGuardConnectionWrapper は oracle.jdbc.OracleConnection にキャストできません
変更されたクラスは次のようになります。
@PersistenceCapable
public class Position
{
@PrimaryKey
private String name;
@Persistent
private JGeometry point;
public Position(String name, double x, double y)
{
this(name, JGeometry.createPoint(new double[]{x, y}, 2, 4326));
}
public Position(String name, JGeometry point)
{
this.name = name;
this.point = point;
}
public String getName()
{
return name;
}
public JGeometry getPoint()
{
return point;
}
@Override
public String toString()
{
return "[name] "+ name + " [point] "+point;
}
}
DataNucleus Spatial の素晴らしい世界に欠けているものはありますか? 空間が追加されるたびに失敗するのはなぜですか? 注釈を付けていますが、JDO xml ファイルは必要ですか? チュートリアルに記載されていない注釈はありますか? チュートリアルに示されている jdo xml ファイルが必要であり、これらのエラーが発生する理由がある場合、どこに配置すればよいですか? 私は現在、プロジェクトで 3 週間遅れており、これがすぐに修正されない場合は Hibernate に切り替えようとしています。