如何将java bean对象存储为DB列中的clob(使用Hibernate)

时间:2017-10-30 07:59:41

标签: java hibernate-mapping clob

我的Java bean如下所示 公共类AuditRptDTO {

private Date timestamp;
private String userId;
private String stName;
private String userType;
private String code;
private Clob oldRecord;
private Clob newRecord;
private String serverIp;

} 这里代替oldRecord和newRecord我需要保存另一个bean对象。 我如何使用XML映射在hibernate中实现这一点。

1 个答案:

答案 0 :(得分:1)

一个简单的方法是:

序列化您的对象:

Local stringvar array MYARRAY:=  Split("ABZ SYP 10MLS-5-40-1-b.d-5-10-400", " ");
Local Strngvar array AfterSplit1:=Split(MYARRAY[3], ".");;
Local Strngvar array AfterSplit2:=Split(AfterSplit1[1], "-");
Local Strngvar array AfterSplit3:=Split(AfterSplit1[2], "-");


                                //output:

MYARRAY[1]& ChrW(13) &             //ABC
MYARRAY[2]&  ChrW(13) &           //SYP 
AfterSplit2[1]& ChrW(13) &         //10MLS
AfterSplit2[2]& ChrW(13) &           //5
AfterSplit2[3]& ChrW(13) &         //40
AfterSplit2[3]& ChrW(13) &         //1
AfterSplit2[4]& ChrW(13) &         //b
AfterSplit3[1]& ChrW(13) &          //d
AfterSplit3[2]& ChrW(13) &           //5
AfterSplit3[3]& ChrW(13) &          //10 
AfterSplit3[4]                      //400

Base 64对数据进行编码以获得字符串。

ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
ObjectOutput out  = new ObjectOutputStream(bos) ;
out.writeObject(object);
out.close();

byte[] dataArray = bos.toByteArray();

然后所需要的只是将String转换为Clob接口的实例,您可以创建自己的或使用现有的。

String dataString = Base64.encodeBase64String(dataArray);

可能有一种更简单的方法来实例化您的Clob对象,但您肯定需要首先序列化您的对象。我会留给你看看你是否能改进这一点。