aciobanu
aciobanu

Reputation: 389

Javax.persistence with @Entity bean saving int[] as bytea (postgres)

In my current project i have an @Entity bean, with, among others, an int[] field, which should match an integer[] field in my postgres database.
However, upon persisting my object i get an exception like this:

Internal Exception: org.postgresql.util.PSQLException: ERROR: column "drawset_basedata" is of type integer[] but expression is of type bytea
Error Code: 0
Call: INSERT INTO drawset (drawset_id, drawset_basedata, drawset_created, drawset_data) VALUES (?, ?, ?, ?)
    bind => [null, [B@19701da, null, [B@facd93]
Query: InsertObjectQuery(lotoFlow.Drawset[drawsetId=null])
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)

I used the debugger and i can see clearly that the baseData proprety is an initialised int[] variable, i don't understand why it arrives as an bytea.
Thanks!

Upvotes: 0

Views: 1103

Answers (1)

Chris Travers
Chris Travers

Reputation: 26464

Hibernate and JPA do not support PostgreSQL arrays, so your best bet is to normalize your model or run your SQL manually.

While it is true that PostgreSQL handles arrays very well, many other dbs do not. For this reason one generally does not expect great array support in cross-db frameworks.

Upvotes: 1

Related Questions