【问题标题】:How to use INTERSECTS operation with Querydsl Spatial如何在 Querydsl Spatial 中使用 INTERSECTS 操作
【发布时间】:2014-11-02 17:18:04
【问题描述】:

我正在尝试对 Querydsl 使用 INTERSECTS 操作:

PolygonPath<Polygon> polygonpath = new PolygonPath<Polygon>(entityPath, "location");
Geometry geometry = Wkt.fromWkt("POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))");
BooleanExpression intersectsExpression = polygonpath.intersects(geometry);

当生成 BooleanExpression 时,我收到以下消息:

unknown operation with operator com.mysema.query.spatial.SpatialOps#INTERSECTS and args [entity.location, POLYGON((30 10,40 40,20 40,10 20,30 10))]

我正在使用 HibernateSpatial.. 然后我正在尝试执行以下操作:

根据您的 HibernateSpatialSupport 创建我自己的类,以创建有效的相交操作以在 HibernateSpatial 上使用。

我创建了一个 HibernateSpatialOps:

private static final String NS = HibernateSpatialOps.class.getName(); public static final Operator<Object> INTERSECTS = new OperatorImpl<Object>( NS, "intersects({0}, {1})");

当我使用 intersects 操作生成 BooleanExpression 时出现以下消息:

unknown operation with operator org.project1.querydsl.HibernateSpatialOps#intersects({0}, {1}) and args [entity.location, POLYGON ((-0.948944091796875 39.49052944781087, -0.4988479614257812 39.49052944781087, -0.4988479614257812 39.39030533696812, -0.948944091796875 39.39030533696812, -0.948944091796875 39.49052944781087))]

你能帮帮我吗?

最好的问候,

【问题讨论】:

    标签: querydsl hibernate-spatial


    【解决方案1】:

    Querydsl 中尚不提供 Hibernate Spatial 支持。随时通过拉取请求进一步推动它。

    【讨论】:

    • 终于找到了解决办法。我创建了一个 HibernateSpatialTemplate,它从您的 /test/HibernateSpatialSupport 获取 ops 值并在构造 JPAQuery 时传递...并且使用 HibernateSpatial 可以正常工作!!!...另一方面,我使用的是 JTS 而不是 geolate 类型。 ..我已经实现了 GeometryExpression、GeometryPath 等...接收 JTS 项目...您认为是一个好的解决方案吗?
    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多