JPA:使用String字段,但修改它们并保存为字节数组

时间:2013-01-22 10:35:31

标签: java jpa

我们在应用程序中使用JSON String来存储大量配置数据。现在我们想将它作为BLOB保存到数据库中。 JSON字符串将转换为二进制表示形式(BSON),然后我们要存储它。

实体:

@Entity
@Table(name="TBL_CONFIG")
public class ConfigEntity {

    [...]

    @Column(name = "CONFIG")
    @JSON
    private String config;

    [...]
}

Global EntityListener:

public class JsonBinaryConversionListener {

    @PrePersist
    public void process() {
        // Check @JSON fields and for every field
        [...]
       field.set(objectConversion.toBson(field.get()));
        [...]
        // The field is String, the conversion gives us a byte array
    }

}

列CONFIG设置为BLOB。只使用@Lob注释不起作用,因为我们想手动更改值。

有没有办法让我们通过JPA实现这个目标?

1 个答案:

答案 0 :(得分:1)

如果您使用的是EclipseLink,则可以使用转换器,

见, http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_converter.htm#CHDEHJEB

否则,您可以使用属性访问(get / set)方法来转换数据,

http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes#Conversion

JPA 2.1草案也提出了转换器支持。