【问题标题】:ActiveJDBC: integer[] on PostgreSQL with multiple schemas in one DBActiveJDBC:PostgreSQL 上的整数 [],在一个数据库中具有多个模式
【发布时间】:2016-06-29 12:15:23
【问题描述】:

我正在尝试使用ActiveJDBCinteger[] 从我的PostgreSQL 数据库正确转换为java equivalent int[]。我正确完成了提取,但返回的对象是weblogic.jdbc.wrapper.Array_org_postgresql_jdbc_PgArray。我还没有找到一种方法来转换它。

我尝试了 2 种不同的数据访问方式:

首先,使用标准的record.findFirst("id = ?", id) 格式。因为我的数据库中有多个模式,所以我将@Table 符号添加到我的模型中。

其次,我尝试做一个record.findBySQL("select array from record where id = ?", id)。我也试过array::integer[]

每次我取回 PgArray 类型。我已经寻找一种方法可以将这种类型转换为其他类型以供使用,但没有任何效果。

有没有办法做到这一点?除了ActiveJDBC,我还需要使用其他的数据检索方式吗?

【问题讨论】:

    标签: java postgresql activejdbc javalite


    【解决方案1】:

    JDBC 定义 java.sql.Array 来处理数组类型的列。 PgArray 只是 java.sql.Array 的 Postgres 实现。

    给定数组对象a,您可以调用(Integer[])a.getArray() 从JDBC 数组对象中获取Integer 数组(如果JDBC 驱动程序决定返回Integer 对象而不是其他@987654329 @)。提取值并转换为 int[] 的辅助方法可能是个好主意。

    不知道activejdbc是否支持在后台做这个转换。

    【讨论】:

    • 我无法使用 getArray() 方法。 ActiveJDBC 将所有检索到的项目放入我的模型中,然后我使用:model.get("column") 检索它们。没有与之关联的 getArray() 方法。我已经尝试将它转换为 Integer[] 和 PgArray,但都抛出 ClassCastExceptions。
    • 我刚刚在此处的另一篇文章中找到了该解决方案。它成功地工作了。谢谢!
    • 当您通过调用get("column") 获取数组时,您返回的是什么Java 类型?
    • @ipolevoy 返回的类是weblogic.jdbc.wrapper.Array_org_postgresql_jdbc_PgArray
    猜你喜欢
    • 2010-11-25
    • 2010-11-12
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2015-10-09
    • 2016-08-05
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多