我正在尝试使用自定义数据持久性来保留postgres POINT(x,y),但是ORMLite坚持用引号包装我的值,Postgres拒绝这样做。
我从DB获取错误:
错误:类型点的输入语法无效:“POINT(-115.17913055419922,36.08929443359375)”
以下是SQL应该如何显示:
INSERT INTO somegeometries值(POINT(-119.234,36.089))
以下是持久性的重要部分:
public PGpointDataPersister() {
super(SqlType.OTHER, new Class[] {PGpoint.class});
}
public Object javaToSqlArg(FieldType fieldType, Object javaObject) throws SQLException {
if (javaObject == null) {
return null;
}
PGpoint pt = (PGpoint) javaObject;
return "POINT(" + pt.x + "," + pt.y + ")";
}
根据Postgresql的文档,这应该在JDBC驱动程序中得到支持。请参阅https://jdbc.postgresql.org/documentation/80/geometric.html。
我正在使用ORMLite 4.48和官方的postgresql JDBC4驱动程序。
我怎样才能做到这一点?
答案 0 :(得分:0)
原来我所要做的就是返回完全相同的对象,让JDBC驱动程序完成其余的工作
public Object javaToSqlArg(FieldType fieldType, Object javaObject) throws SQLException {
return javaObject;
}