【问题标题】:Mapping MySQL Point Data Type with Hibernate使用 Hibernate 映射 MySQL 点数据类型
【发布时间】:2019-12-10 09:07:48
【问题描述】:

我有一个现有的 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 应该只是“点”,但认识到这可能是一个不准确的假设。无论我尝试哪种类型/sql 类型的组合,我通常都会在一个不起眼的堆栈跟踪中遇到反序列化错误,这并不是特别有用。

如果相关,我通过:SET pickup_location=POINT(18 -63) 在表中播种数据。

【问题讨论】:

    标签: java mysql hibernate hibernate-spatial


    【解决方案1】:

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

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

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

    【讨论】:

    • 对于后代来说,这被证明是准确的。昨晚能够解决它。我已经转换成一种空间方言。正如您所说,映射文件不需要类型或 sql 类型。我不得不将 Point 转换为 org.locationtech.jts.geom.Point 而不是vividsolutions 类型,这是最终使它起作用的一点。开启TRACE级别的调试后,就清晰了一些。感谢您的回复。
    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 2011-03-11
    • 2015-03-09
    • 1970-01-01
    • 2011-02-03
    • 2010-11-09
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多