在我当前的项目中,我有一个@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到达。
谢谢!
答案 0 :(得分:1)
Hibernate和JPA不支持PostgreSQL数组,所以最好的办法是规范化模型或手动运行SQL。
虽然PostgreSQL确实很好地处理数组,但许多其他数据库却没有。出于这个原因,人们通常不希望跨数据库框架中有很好的数组支持。