二手工具及其版本:
我正在使用:2.2.6
5.3.10
,方言设置为:org.hibernate.spatial.dialect.mysql.MySQL56SpatialDialect
4.2.1
com.vividsolutions.jts 1.13
4.3.1
问题描述:
import com.vividsolutions.jts.geom.Polygon;
@Entity
public class Clinic {
@Column(name = "range", columnDefinition = "Polygon")
private Polygon range;
}
range
是先前根据诊所的gps-location
和radius
计算出的圆。它代表该诊所的手术区域。这意味着它将仅治疗其住所地址位于该圈子内的患者。假设上面的圆圈是正确的。
我的目标(问题):
我在患者位置有一个gps点:45.7602322 4.8444941
。我想找到所有能够治疗该患者的诊所。这意味着要查找其range
字段包含45.7602322 4.8444941
的所有诊所。我的解决方案(部分正确(我认为))
为了完成它,我创建了一个简单的“ Predicate” /“ BooleanExpression”:GeometryExpressions.asGeometry(QClinic.clinic.range)
.contains(Wkt.fromWkt("Point(45.7602322 4.8444941)"))
它实际上有效,因为我可以在控制台中看到正确的sql查询:
select (...) where
ST_Contains(clinic0_.range, ?)=1 limit ?
第一绑定参数:POINT(45.7602322 4.8444941)
但是我有两个问题:
QClinic.clinic.range
]在intellij中标记为“警告”:“ Unchecked assignment: 'com.querydsl.spatial.jts.JTSPolygonPath' to 'com.querydsl.core.types.Expression<org.geolatte.geom.Geometry'
”。是的,在QClinic
范围内是com.querydsl.spatial.jts.JTSPolygonPath
unknown operation with operator CONTAINS and args [clinic.range, POINT(45.7602322 4.8444941)]
”