【发布时间】:2017-04-12 11:20:26
【问题描述】:
我有以下案例类:
case class Block(
id: Option[Int] = None,
blockId: Int,
name: String,
location: Option[Point] = None,
geometry: Option[Geometry] = None,
)
在 postgres 我有一个表 SubBlock contient id:整数, 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())))
我的请求返回了正确的结果,但是在我得到 « 线程“main” java.lang.NullPointerException 中的异常« 因为 sub_block_geom 在我的数据库中为空,所以我认为解决方案是更改隐式 val getSubBlock 或用过滤器、sortedBy 编写查询……我不知道该怎么做
【问题讨论】:
-
嗯...问题是 t=您的问题现在几乎无法回答。这里需要的信息是 - 你的
SubBlock类是什么?,你的确切错误堆栈跟踪是什么? -
解决办法就是在你的
getSubBlock中适当处理null的可能性。