hibernate clob 处理大字段

	hibernante 支持 保存对象后 返回该保存的ID号(省去在查询一次啦)

	业务层

	public void addEvent(EventVO eventVO) throws BOException
	{
		DefaultTransactionDefinition def = new DefaultTransactionDefinition();
		def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
		TransactionStatus status = this.transactionManager.getTransaction(def);

		try {
			EventEvents eventEvents = new EventEvents();

			eventEvents.setUserId(Long.parseLong(eventVO.getUserId()));
			eventEvents.setEventName(eventVO.getEventName());
			eventEvents.setProvinceId(Long.parseLong(eventVO.getProvinceId()));
			eventEvents.setCityId(Long.parseLong(eventVO.getCityId()));
			eventEvents.setArea(eventVO.getArea());
			//转换日期型 入库
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//			eventEvents.setStartTime(sdf.parse(eventVO.getStartTime()));
//			eventEvents.setEndTime(sdf.parse(eventVO.getEndTime()));
//			eventEvents.setStopTime(sdf.parse(eventVO.getStopTime()));
			eventEvents.setLimitNumber(Long.parseLong(eventVO.getLimitNumber()));
			eventEvents.setJoinType(Long.parseLong(eventVO.getJoinType()));
			eventEvents.setTemplate(eventVO.getTemplate());
			eventEvents.setTypeId(Long.parseLong(eventVO.getTypeId()));

			//处理 大字段 CLOB
			eventEvents.setEventContent(Hibernate.createClob(" "));


			eventRepository.addEvent(eventEvents); -----------------------------------------------------------见第二部分
			System.out.println("##############"+eventEvents.getEventContent());
			/* 处理clob字段 */
			SerializableClob sc = (SerializableClob)eventEvents.getEventContent();//
			Clob wrapclob = sc.getWrappedClob();// 这里的Clob是java.sql.Clob
			CLOB clob = (CLOB) wrapclob;// 这里的CLOB是oracle.sql.CLOB
			Writer writer = clob.getCharacterOutputStream();
			writer.write(eventVO.getEventContent());// kybasicInfo.getInfoContentToString()是String类型的,在action里就是传这个进来,然后再通过文件流形式写成CLOB字段中
			writer.close();

			transactionManager.commit(status);

		} catch (Exception e) {
			transactionManager.rollback(status);
			e.printStackTrace();
		}
	}

第二部分
	/**
	 * 新增活动,返回活动ID
	 */
	public void addEvent(EventEvents eventEvents) throws DAOException
	{
		this.saveReturnID(eventEvents);
	}
第三部分
		/**
	 * 保存实体,返回ID
	 *
	 * @param o
	 * @return
	 */
	public Object saveReturnID(Object o) throws DAOException {
		Object id = null;
		try {
			id = this.getMyHibernateTemplate().save(o);
			this.getMyHibernateTemplate().flush();  ---------------------------  大字段处理
			this.getMyHibernateTemplate().refresh(o); ---------------------------大字段处理
		} catch (Exception e) {
			throw new DAOException(e, this.getClass());
		}
		return id;
	}

update==>


	public void modifyEvent(EventEvents event) throws DAOException
	{
		this.update(event);
		this.getMyHibernateTemplate().refresh(event,LockMode.UPGRADE);//锁定
	}



	public void update(Object o) throws DAOException {
		try {
			// BeanCodingConvert.ObjectConvert(o, BeanCodingConvert.GBK2ISO);
			this.getMyHibernateTemplate().update(o);
			this.getMyHibernateTemplate().flush();

		} catch (Exception e) {
			e.printStackTrace();
			throw new DAOException(e, this.getClass());
		}
	}



	读取CLOB ==>String

	//			CLOB 格式 转换 = string
	try {
		Clob clob = expert.getExpertInfor();
		expertInfor = IOUtils.toString(clob.getCharacterStream());
	} catch (IOException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	}

你可能感兴趣的:(oracle,sql,Hibernate,活动)