NutzCN Logo
问答 自定义sql报错 ----- 无效的列索引
发布于 2270天前 作者 DarkObject 1981 次浏览 复制 上一个帖子 下一个帖子
标签:

但是报错日志打印的sql语句用pl/sql运行可以

10 回复

哦,, 日志打印的sql语句是:

SELECT * FROM RTS_SDO_SPATIAL where SDO_WITHIN_DISTANCE(RTS_SDO_SPATIAL.SDODATA,SDO_GEOMETRY(2001, 4490, MDSYS.SDO_POINT_TYPE(114.374296952994, 22.7277813986333, null), null, null),'distance=1000.0')='TRUE'
String sqlStr = "SELECT * FROM RTS_SDO_SPATIAL where SDO_WITHIN_DISTANCE(RTS_SDO_SPATIAL.SDODATA,SDO_GEOMETRY(2001, 4490, MDSYS.SDO_POINT_TYPE(@lat, @lon, null), null, null),'distance=@radius')='TRUE'";
		Sql sql = Sqls.create(sqlStr);
		sql.params().set("lat", point.getX()).set("lon", point.getY()).set("radius", radius);
		Entity<Rts_Sdo> entity = dao().getEntity(Rts_Sdo.class);
		sql.setEntity(entity);
		sql.setCallback(Sqls.callback.entities());
        Sql execute = dao().execute(sql);
		List<Rts_Sdo> rtsSdo = sql.getList(Rts_Sdo.class);
		return rtsSdo;

我建的是空间索引 和 一般的b-tree不一样

'distance=@radius'

参数可不能这样传啊

那我把参数直接拼到sql里面试试

转为PrepStatment就变成

SELECT * FROM RTS_SDO_SPATIAL where SDO_WITHIN_DISTANCE(RTS_SDO_SPATIAL.SDODATA,SDO_GEOMETRY(2001, 4490, MDSYS.SDO_POINT_TYPE(?, @lon, null), null, null),'distance=?')='TRUE'

radius走变量

好了 是我设置值时错了 现在可以了,谢谢大佬!

添加回复
请先登陆
回到顶部