在 Hibernate 中映射 java.awt.Color

Mer*_*ijn 2 java serialization hibernate

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

 @Column(name = "color")
 public Color getColor() {
    return color;
 }
Run Code Online (Sandbox Code Playgroud)

该字段以文本形式存储在 Postgres 数据库中。当我尝试存储这些时,出现以下异常:

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 ...
Run Code Online (Sandbox Code Playgroud)

我想知道 Hibernate 是否提供任何这种类型的映射?我的另一种可能性是使用 RGB 值将颜色转换为字符串。但是由于我的域对象也是我的 Hibernate 对象,所以我真的不知道如何在不将属性类型更改为 String 的情况下做到这一点。

Mer*_*ijn 5

好吧,我发现我可以写使用javax.persistence.AttributeConverter一个自己的转换器,如所描述这里