用于postgres几何对象的ORMLite自定义数据持久化

时间:2015-08-04 18:47:18

标签: java postgresql ormlite

我正在尝试使用自定义数据持久性来保留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驱动程序。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

原来我所要做的就是返回完全相同的对象,让JDBC驱动程序完成其余的工作

public Object javaToSqlArg(FieldType fieldType, Object javaObject) throws SQLException {
    return javaObject;
}