在Hibernate中映射java.awt.Color

时间:2015-12-12 15:25:00

标签: java hibernate serialization

现在我在其中一个域对象中有以下属性:

 @Column(name = "color")
 public Color getColor() {
    return color;
 }

该字段存储在Postgres DB中的文本中。当我尝试存储这些时,我得到以下例外:

org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:243)
at org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:287)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:138)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:113)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:27)
at org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:53)
at ...
Caused by: java.io.StreamCorruptedException: invalid stream header: 5C786163
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:309)
at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:299)
at ...

我想知道Hibernate是否提供此类型的任何映射?我的另一种可能性是使用RGB值将Color转换为String。但由于我的域对象也是我的Hibernate对象,所以我不知道如何在不将属性类型更改为String的情况下执行此操作。

1 个答案:

答案 0 :(得分:1)

好的,我注意到我可以使用javax.persistence.AttributeConverter编写自己的转换器,如上所述here