2

I have a postgres DB containing a table with a boolean array for the days of the week (t/f whether the employee has to work on this day or not).

The table is as follows:

CREATE TABLE employee(
        ...,
    weekdays BOOLEAN[7],
        ...
);

In my Java servlet I would like to read and write the array using a boolean[] (primitive type). I have found out that it should work with the java.sql.Array Object.

Inserting does not work with the following:

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<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;
}

I'm getting an org.postgresql.util.PSQLException: Unable to find server array type for provided name BOOLEAN exception.

I'm also somehow stuck the way round doing the conversion from java.sql.Array to boolean[]. Ideas, Best practices?

4

0 回答 0