【问题标题】:ORMLite custom data persister for postgres geometry objects用于 postgres 几何对象的 ORMLite 自定义数据持久化器
【发布时间】:2015-10-27 07:27:33
【问题描述】:

我正在尝试使用自定义数据持久化器来持久化 postgres POINT(x,y),但 ORMLite 坚持用引号将我的值括起来,Postgres 拒绝了。

我从数据库得到的错误:

错误:类型点的输入语法无效:“POINT(-115.17913055419922,36.08929443359375)”

这是它在 SQL 中的样子:

插入一些几何值 (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 驱动程序。

我怎样才能做到这一点?

【问题讨论】:

标签: java postgresql ormlite


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多