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

标签 java jpa

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

实体:

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

    [...]

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

    [...]
}

全局实体监听器:

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 实现这一点?

最佳答案

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

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

否则您可以使用属性访问(获取/设置)方法来转换数据,

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

JPA 2.1 草案也提出了 Converter 支持。

关于java - JPA:使用字符串字段,但修改它们并保存为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456543/

相关文章:

javax.naming.NameNotFoundException : Name is not bound in this Context. 无法找到

java - 不使用 JFrame 创建屏幕(窗口)

java - Mockito:模拟对象,不是成员,但内联创建

java - getResourceAsStream 返回 null

java - JPA/Ebean - 使用 PostgreSQL 强制 @Id 严格递增 +1

java - JPA 2.1/hibernate 5 : Search on inner type of Composite User Type with criteria API

java - RDF4J:解析来自端点的查询结果并将其存储为 ntriples 文件(格式错误的查询)

Java 无法从 AJAX POST 接收数据

java - Hibernate - XML 中的可重用组件定义?

java - 来自数据库的多语言支持数据