/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.component.dynproperty.support.hibernate; import com.jinhe.tss.component.dynproperty.support.AbstractDynEntity; import com.jinhe.tss.component.dynproperty.support.DynProperty; import com.jinhe.tss.core.exception.BusinessException; import com.jinhe.tss.core.persistence.BaseDao; import com.jinhe.tss.core.persistence.IEntity; /** * <p> AbstractHibernateDao.java </p> * * @author Jon.King 2008/04/14 10:18:47 $ */ public abstract class DynAbstractHibernateDao extends BaseDao<IEntity> implements IDynAbstractHibernateDao{ public DynAbstractHibernateDao(Class<IEntity> type) { super(type); } /** * ********************************************************************************************** * *************************** 以下为动态属性值存取删等各种操作封装 **************************** * ********************************************************************************************** */ private DynProperty dp = new HibernateDynProperty(); /** * 保存某个对象和对象的所有动态属性值 * @param entity * @return */ public AbstractDynEntity saveDynEntity(AbstractDynEntity entity) { dp.init( this ); create(entity); //保存动态实体自身 dp.saveDynProperti4Entity(entity); return entity; } /** * 获取某个对象和对象的所有动态属性值 * @param clazz * @param id * @return */ public AbstractDynEntity getDynEntity(Class<?> clazz, Long id) { dp.init( this ); Object obj = getEntity(clazz, id); if(!(obj instanceof AbstractDynEntity)) { throw new BusinessException("获取到的对象非AbstractDynEntity子类,不能调用本方法:getDynEntity(Long id, Class clazz)。"); } return dp.getDynProperti4Entity((AbstractDynEntity) obj); } /** * 删除某个对象和对象的所有动态属性值 * @param obj */ public void removeDynEntity(Object obj) { if(!(obj instanceof AbstractDynEntity)) throw new BusinessException("对象非AbstractDynEntity子类,不能调用本方法:removeDynEntity(Object obj)。"); dp.init( this ); AbstractDynEntity entity = (AbstractDynEntity) obj; delete(entity); dp.removeDynProperti4Entity(entity); } }