hibernate和oracle数据库连接,Blob的映射操作

public void deployProcessDefinition(byte[] processDef, byte[] processImage) {
		
		//使用hibernate的工具把byte[]-->Blob
		Blob blobProcessImage_ = Hibernate.createBlob(processImage);
		
		//通过byte【】数字创建ProcessDefinition
		ProcessDefinition def = 
			ProcessDefinition.parseXmlInputStream(
					new ByteArrayInputStream(processDef));
		
		//将流程定义部署都jbpm
		getContext().deployProcessDefinition(def);
		
		Session session = getSession();
		
		//到oa
		Workflow workflow = (Workflow)getSession()
										.createQuery("select w from cn.blueram.oa.model.Workflow w where w.name = ?")
										.setParameter(0, def.getName())
										.uniqueResult();
		if(workflow == null) {
			workflow = new Workflow();
			workflow.setName(def.getName());
			workflow.setProcessDef(processDef);
			workflow.setProcessImage(Hibernate.createBlob(new byte[1]));
			//数据库没有,添加新的存储到数据库
			session.save(workflow);
			session.flush();
			session.refresh(workflow,LockMode.UPGRADE);
			
			
			SerializableBlob blobProcessImage = (SerializableBlob)workflow.getProcessImage();
			java.sql.Blob blo = (java.sql.Blob)blobProcessImage.getWrappedBlob();
			oracle.sql.BLOB obj = (oracle.sql.BLOB)blo;
			
			try {
				OutputStream outs = obj.getBinaryOutputStream();								
				outs.write(processImage,0,processImage.length);
				outs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			session.save(workflow);
			return;
		}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值