2012-02-04 8 views
1

私はデータ型と空間タイプを接続しようとしていました。データニュークリアス空間マッピングエラー

私は以下のようにマッピングをしたMySQLのジオメトリタイプ

である、 "場所" の表にpla_locationと呼ばれるデータベースフィールドを持っている:

import com.vividsolutions.jts.geom.Geometry; 

public class Place implements java.io.Serializable { 
... 
private Geometry plaLocation; 

... 
(getters and setters) 
... 
:私が持っている場所のJavaオブジェクトで

<entity class="com.dn.dntest.model.Place"> 
<table name="place" schema="map"/> 
    <attributes> 
    ... 
    <basic name="plaLocation"> 
     <column name="pla_location" /> 
    </basic>    
    ... 

これで「クエリ」を使用してデータベースに質問しています

Query q = em.createQuery("select a FROM com.dn.dntest.model.Place as a"); 
List results = q.getResultList(); 

、結果は

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'P.PLALOCATION' in 'field list' 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.Util.getInstance(Util.java:386) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624) 
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127) 
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293) 
at org.datanucleus.store.rdbms.datasource.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) 

あるしかし、私はインスタンスstringのためにジオメトリタイプを変更した場合、すべてがうまく動作します - しかし、もちろん私が代わりに幾何学:)

んの文字列を持っていますデータニュークリアスがJPA(JDOのみ)の空間をサポートしていないことを意味しますか? データニュークリアスのJPA空間の例が見つかりませんでした。これは基本的なマッピングです! 月の誰かがこの問題を解決する方法を知っているだろう

バージョン: DataNucleusのコア3.0.6 DataNucleusの-RDBMS 3.0.6 DataNucleusの-API-JPA 3.0.6 DataNucleusの空間3.0.1

DataNucleusの「コア」と店のプラグインは、すべてのAPI独立しているため、データベースのMySQL

敬具

答えて

1

DataNucleusのは、明らかに、JDOまたはJPAの空間タイプの使用をサポートしています。私はJDOまたはJPAを使用して問題なくMySQLに "JTS"ジオメトリフィールドを保持できます。明らかに、JPAのorm.xmlは、標準の一環として、「ノーユーザデータ」拡張子の指定を許可していません...しかし、あなたはこの

<basic name="geom"> 
    <extension vendor-name="datanucleus" key="mapping" value="no-userdata"/> 
</basic> 
+0

のように定義することができますそれは良い音が、私は、XMLの非互換性(orm_1_0を持っています。 xsd) - JDOだけでこの構造を見ましたが、大丈夫です。 私はいくつかのフォーラムでdatanucleusが注釈(xml ormのみ)をサポートしていないことを読んでいるのでxmlを使用します - これはまだ当てはまりますか? –

+0

インターネットで読んだことはすべて信じていますか?それは全くナンセンスです。 DataNucleusは、JPA1以降、注釈やXMLをサポートしています。 "orm_2_0.xsd"を使用すると、DataNucleusはそれを独自のコピーに解決します... が含まれています。 – DataNucleus

+0

大変申し訳ありませんが、私は思った以上に何かを書きました。つまり、GAEはアノテーションをサポートしていますか? –