使用Hibernate映射MySQL Point数据类型

时间:2019-08-01 17:58:12

标签: java mysql hibernate hibernate-spatial

我的智慧到此为止。我有一个现有的MySQL数据库,该数据库的表中的列具有“点”数据类型。我做的第一件事是通过以下方式将空间依赖性添加到我们的gradle构建文件中:

implementation 'org.hibernate:hibernate-spatial:5.4.2.Final'

我正在努力弄清楚如何正确修改映射文件(基于XML,不使用注释)以及相应的模型以支持加载。

    <property name="pickupLocation" type="???">
        <column name="pickup_location" sql-type="???"/>
    </property>

从我在网上可以找到的一小部分示例中收集到的信息来看,我需要它最终成为模型中的com.vividsolutions.jts.geom.Point数据类型。实际上,这就是我在模型端所拥有的全部。我会假设sql-type应该只是“ point”,但是认识到这可能是一个不准确的假设。无论我尝试使用哪种类型/ sql-types的组合,通常都会在模糊的堆栈跟踪中遇到反序列化错误,但这并不是特别有用。

如果相关,我可以通过SET pickup_location=POINT(18 -63)将数据植入表中。

1 个答案:

答案 0 :(得分:2)

只要pickupLocation的类型为JTS Point,则映射文件中就不需要typesql-type

您可能要检查您的应用程序实际上是否在使用空间方言(有关可用的方言,请参见manual)。这是此类问题的最常见来源。

在任何情况下,值point对于sql-type是正确的,对于type,它应该是jts_geometry