◎筱米加步枪◎.Blog

Happy coding

有关Hibernate中PO对象Blob字段的注解

PO对象中使用Hibernate注解方式进行映射.Blob字段描述如下:

1.首先PO对象中属性名可指定为byte数组(byte[])
   

private byte [] templateData;

2.在Setter方法中进行注解方式如下:

    @Lob
    @Basic(fetch = FetchType.LAZY)
    @Column(name = "TEMPLATE_DATA",columnDefinition="BLOB")
    public byte [] getTemplateData() {
        return this.templateData;
    }

 

有关Oracle中的Blob字段更新问题

先说下偶遇到的问题:

Oracle中我使用Blob字段来存一个Xml内容.新增一条记录正常,但是尝试用一条记录去更新已经存在的记录.

发现Blob中的字段中的内容并没有被更新掉.


网络上的一些朋友说原因如下:

假设Blob字段中已经存在的内容是100个字节,那么尝试用50字节的内容去更新,

那么得到的结果就是:前面50个字节被覆盖,而Blob仍然存在100个字节,其中后面50个字节是原先的后50个字节.


那么解决的方法如下:(证实可以通过)

先清空原Blob字段中的数据,再进行字节的写入.(与平常的更新操作会多了一步).

具体的更新方法如下:

UPDATE 表名 SET BLOB字段=EMPTY_BLOB() WHERE 条件.

然后再执行具体的更新SQL语句.