使用 Hibernate 映射 MySQL 点数据类型

Mapping MySQL Point Data Type with Hibernate

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

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

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

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

根据我在网上可以找到的一小部分示例中收集的内容,我需要它在我的模型中以 a: com.vividsolutions.jts.geom.Point 数据类型结束。这基本上就是我在模型端所拥有的全部。我假设 sql-type 应该只是“点”,但认识到这可能是一个不准确的假设。无论我尝试哪种 types/sql-types 组合,我通常都会在模糊的堆栈跟踪中遇到反序列化错误,这并不是特别有用。

如果相关,我通过以下方式在 table 中播种数据:SET pickup_location=POINT(18 -63)

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

您可能需要检查您的应用程序是否确实使用了空间方言(请参阅 manual 了解可用的方言)。这是此类问题的最常见来源。

无论如何,值 point 对于 sql-type 是正确的,对于 type 它应该是 jts_geometry