最近点我有以下的情况下类:获取用油滑
case class Block(
id: Option[Int] = None,
blockId: Int,
name: String,
location: Option[Point] = None,
geometry: Option[Geometry] = None,
)
Postgres里我有一个表的子块contient ID:INT, BLOCK_ID:诠释, 名称:字符串, geom_location:地理, sub_block_geom:地理
我定义一个函数返回最近的指定点的子块
override def getNearestSubBlock(point: Point): Future[SubBlock] = {
val query = sql"""SELECT sub_block_id,block_id,name,ST_AsText(geom_location),sub_block_geom from now.sub_block order by ST_Distance(geom_location, ST_MakePoint(${point.getX()}, ${point.getY()})::geography) limit 1""".as[SubBlock].head
db.run(query)
}
implicit val getSubBlock = GetResult(r => SubBlock(r.nextIntOption(), r.nextInt(), r.nextString(), Option(Location.location2Point(Location.fromWKT(r.nextString()))), Option(new WKTReader().read(r.nextString())))
和我的请求返回正确的结果,但后我得到«异常在线程“主”java.lang.NullPointerException«因为sub_block_geom在我的数据库中为空,所以我认为解决方案是改变隐式val getSubBlock或用筛选器编写查询,sortedBy,...我不知道该怎么做
那么......事情是t =你的问题几乎不可回答,因为它是现在。这里需要的信息位是 - 你的SubBlock类是什么?你确切的错误堆栈跟踪是什么? –
解决的办法就是恰当地处理'getSubBlock'中'null'的可能性。 –