我可以将“ST_Buffer”与 hibernate 和 MySql 一起使用吗?

Can I use `ST_Buffer` with hibernate and MySql?

提问人:ahdjd 5 提问时间:10/3/2023 更新时间:10/5/2023 访问量:27

问:

我有一个关于冬眠空间的问题。 (我正在使用休眠版本 6.1.7.Final)

官方的休眠文档说不支持 MySql 的 St_Buffer,

    @Query("""
            SELECT co
            FROM example AS co
            WHERE st_contains(st_buffer(:center, :radius), co.point)
            """)
    List<CoordinateEntity> findAllWithInCircleArea(@Param("center") final Point center,
                                                   @Param("radius") final int radius);

当我这样写代码时,

@Test
    void findAllWithInCircle() {
        //given
        final Point point = geometryFactory.createPoint(new Coordinate(20, 10));
        point.setSRID(4326);
        final CoordinateEntity ce1 = repository.save(new CoordinateEntity(point));

        final Point point2 = geometryFactory.createPoint(new Coordinate(40, 40));
        point2.setSRID(4326);
        repository.save(new CoordinateEntity(point2));

        //when
        final List<CoordinateEntity> allContainArea = repository.findAllWithInCircleArea(point,10000);

        //then
        assertSoftly(softAssertions -> {
            assertThat(allContainArea).hasSize(1);
            assertThat(allContainArea.get(0)).isEqualTo(ce1);
            assertThat(allContainArea.get(0).getPoint().getX()).isEqualTo(20);
            assertThat(allContainArea.get(0).getPoint().getY()).isEqualTo(10);
        });
    }

此测试代码工作正常。 这难道不意味着ST_Buffer工作正常吗?

当我运行测试代码时,我看到选择创建得很好。

 select
        c1_0.id,
        c1_0.point 
    from
        example c1_0 
    where
        st_contains(st_buffer(?,?),c1_0.point)

我现在很困惑, 我希望有人能告诉我休眠文档中的 X 是什么意思。

我已经阅读并重新阅读了休眠文档,但我似乎没有正确阅读。

mysql 查询 休眠空间

评论


答:

0赞 Karel Maesen 10/5/2023 #1

文档不是最新的。

我检查了代码,支持st_buffer。所以你的代码很好。