Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA:使用字符串字段,但修改它们并另存为字节数组_Java_Jpa - Fatal编程技术网

Java JPA:使用字符串字段,但修改它们并另存为字节数组

Java JPA:使用字符串字段,但修改它们并另存为字节数组,java,jpa,Java,Jpa,我们在应用程序中使用JSON字符串来存储大量配置数据。现在,我们想将其作为BLOB保存到数据库中。JSON字符串将转换为二进制表示形式(),然后我们要存储它 实体: @Entity @Table(name="TBL_CONFIG") public class ConfigEntity { [...] @Column(name = "CONFIG") @JSON private String config; [...] } 全局EntityListe

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

实体:

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

    [...]

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

    [...]
}
全局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
    }

}
列配置被设置为BLOB。仅使用@Lob注释无效,因为我们希望手动更改该值


有没有办法通过JPA实现这一点?

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

看,,

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

JPA2.1草案还提出了转换器支持