首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据核空间映射误差

数据核空间映射误差
EN

Stack Overflow用户
提问于 2012-02-04 19:41:54
回答 1查看 441关注 0票数 1

我试着把空间类型和数据核连接起来。

我在"place“表中有一个名为pla_location的数据库字段,它是mysql几何类型。

我绘制了如下的地图:

代码语言:javascript
复制
<entity class="com.dn.dntest.model.Place">
<table name="place" schema="map"/>
    <attributes>
    ...
    <basic name="plaLocation">
        <column name="pla_location" />
    </basic>            
    ...

在java对象中,我有:

代码语言:javascript
复制
import com.vividsolutions.jts.geom.Geometry;

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

...
(getters and setters)
...

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

代码语言:javascript
复制
Query q = em.createQuery("select a FROM com.dn.dntest.model.Place as a");
List results = q.getResultList();

结果是

代码语言:javascript
复制
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)

但是如果我将几何类型更改为字符串,那么一切都很好--但是,当然,我将使用字符串而不是几何:)

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

版本:数据核-核心3.0.6数据核-rdbms 3.0.6数据核-api-jpa 3.0.6数据核-空间3.0.1

数据库mysql

诚挚的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-06 10:36:03

DataNucleus显然支持在JDO或JPA上使用空间类型,因为DataNucleus“核心”和存储插件都是独立于API的。我可以使用JDO或JPA将一个"JTS“几何字段持久化到MySQL,没有任何问题。很明显,JPA orm.xml不允许将“非用户数据”扩展作为标准的一部分.但你可以这样定义

代码语言:javascript
复制
<basic name="geom">
    <extension vendor-name="datanucleus" key="mapping" value="no-userdata"/>
</basic>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9143925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档