繁体   English   中英

数据核空间映射误差

[英]Data nucleus spatial mapping error

我试图将空间类型与数据核联系起来。

我在“ place”表中名为pla_location的数据库字段中具有mysql GEOMETRY类型

我做了如下映射:

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

在地方的Java对象,我有:

import com.vividsolutions.jts.geom.Geometry;

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

...
(getters and setters)
...

现在我要通过“查询”查询数据库

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)

但是,如果我将Geometry类型更改为String,那么一切都会很好-但是,当然,我将使用string而不是Geometry :)

这是否意味着数据核不支持JPA中的空间(仅JDO)? 我找不到数据核中JPA空间的任何示例-这是基本映射! 可能有人会知道如何解决这个问题

版本:datanucleus-core 3.0.6 datanucleus-rdbms 3.0.6 datanucleus-api-jpa 3.0.6 datanucleus-spatial 3.0.1

数据库mysql

最好的祝福

DataNucleus显然支持在JDO或JPA上使用空间类型,因为DataNucleus的“核心”和商店插件都是与API无关的。 我可以使用JDO或JPA毫无问题地将“ JTS”几何字段持久化到MySQL。 显然,JPA orm.xml不允许将“ no-userdata”扩展名指定为标准的一部分...但是您可以这样定义

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM