`
blueram
  • 浏览: 757383 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

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;
		}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics