使用@Entity bean保存int []的javax.persistence为bytea(postgres)

时间:2011-03-09 23:42:46

标签: java jpa jdbc types persistence

在我当前的项目中,我有一个@Entity bean,其中包含一个int []字段,该字段应匹配postgres数据库中的integer []字段。
但是,在坚持我的对象后,我得到一个像这样的例外:

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)

我使用了调试器,我可以清楚地看到baseData proprety是一个初始化的int []变量,我不明白为什么它作为bytea到达。
谢谢!

1 个答案:

答案 0 :(得分:1)

Hibernate和JPA不支持PostgreSQL数组,所以最好的办法是规范化模型或手动运行SQL。

虽然PostgreSQL确实很好地处理数组,但许多其他数据库却没有。出于这个原因,人们通常不希望跨数据库框架中有很好的数组支持。