Java 如何在Postgres数据库中读取/写入布尔数组?

Java 如何在Postgres数据库中读取/写入布尔数组?,java,sql,arrays,jdbc,jdbc-postgres,Java,Sql,Arrays,Jdbc,Jdbc Postgres,我有一个postgres DB,其中包含一个带有布尔数组的表,用于一周中的几天(不管员工是否必须在这一天工作) 下表如下: CREATE TABLE employee( ..., weekdays BOOLEAN[7], ... ); 在我的Javaservlet中,我希望使用布尔[](原语类型)读取和写入数组。我发现它应该与java.sql.Array对象一起工作 插入不适用于以下情况: Connection dbcon = DataSource.ch

我有一个postgres DB,其中包含一个带有布尔数组的表,用于一周中的几天(不管员工是否必须在这一天工作)

下表如下:

CREATE TABLE employee(
        ...,
    weekdays BOOLEAN[7],
        ...
);
在我的Javaservlet中,我希望使用
布尔[]
(原语类型)读取和写入数组。我发现它应该与
java.sql.Array
对象一起工作

插入不适用于以下情况:

Connection dbcon = DataSource.checkOut();

preparedStatement pstatement = dbcon.prepareStatement("INSERT INTO employee (weekdays) VALUES (?)");
pstatement.setArray(1, dbcon.createArrayOf("BOOLEAN", castToObjectType( objectToInsert.getWorkingdays() ).toArray() ) );

private ArrayList castToObjectType(boolean[]valueArray){
ArrayList objArray=新的ArrayList();
对于(int i=0;i
我得到一个
org.postgresql.util.PSQLException:找不到提供的名称布尔值的服务器数组类型
异常


不知何故,我在从java.sql.Array到
boolean[]
的转换过程中也遇到了麻烦。想法、最佳实践?

您的问题并不清楚-您的代码目前是否正常工作?请尝试在下方的
createArrayOf
中传递
BOOLEAN
case@KonstantinV.Salikhov这很有帮助。谢谢。您还知道如何使用getArray()从数据库检索布尔数组吗?使用
getArray
并使用
boolean[]
对象类型而不是基元类型解决了返回的问题。try(boolean[])resultSet.getArray(“coulmn name”).getArray()
private ArrayList<Boolean> castToObjectType(boolean[] valueArray){
    ArrayList<Boolean> objArray = new ArrayList<Boolean>();

    for (int i = 0; i < valueArray.length; i++) {
        objArray.add( new Boolean(valueArray[i]) );
    }

    return objArray;
}