コード例 #1
0
ファイル: BaseDao.java プロジェクト: snownus/lakeside-java
 /**
  * 合并对象
  *
  * @param entity
  * @return
  */
 public T merge(final T entity) {
   Assert.notNull(entity, "entity不能为空");
   Session session = getSession();
   String idName = getIdName();
   PropertyDescriptor idp = BeanUtils.getPropertyDescriptor(entityClass, idName);
   PK idvalue = null;
   try {
     idvalue = (PK) idp.getReadMethod().invoke(entity);
   } catch (Exception e) {
     throw new FatalBeanException("Could not copy properties from source to target", e);
   }
   T dest = null;
   if (idvalue != null) {
     dest = (T) session.get(entityClass, idvalue);
   }
   if (dest != null) {
     // merge the properties
     PropertyDescriptor[] descriptors = BeanUtils.getPropertyDescriptors(entityClass);
     for (PropertyDescriptor p : descriptors) {
       if (p.getWriteMethod() != null) {
         try {
           Method readMethod = p.getReadMethod();
           if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
             readMethod.setAccessible(true);
           }
           Object value = readMethod.invoke(entity);
           if (value == null) {
             continue;
           }
           Method writeMethod = p.getWriteMethod();
           if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
             writeMethod.setAccessible(true);
           }
           writeMethod.invoke(dest, value);
         } catch (Throwable ex) {
           throw new FatalBeanException("Could not copy properties from source to target", ex);
         }
       }
     }
   } else {
     // destination object is empty, save the entity object parameted
     dest = entity;
   }
   session.saveOrUpdate(dest);
   logger.debug("merge entity: {}", entity);
   return dest;
 }
コード例 #2
0
ファイル: BaseDao.java プロジェクト: snownus/lakeside-java
 /** 按id获取对象. */
 public T get(final PK id) {
   Assert.notNull(id, "id不能为空");
   return (T) getSession().get(entityClass, id);
 }
コード例 #3
0
ファイル: BaseDao.java プロジェクト: snownus/lakeside-java
 /**
  * 删除对象.
  *
  * @param entity 对象必须是session中的对象或含id属性的transient对象.
  */
 public void delete(final T entity) {
   Assert.notNull(entity, "entity不能为空");
   getSession().delete(entity);
   logger.debug("delete entity: {}", entity);
 }
コード例 #4
0
ファイル: BaseDao.java プロジェクト: snownus/lakeside-java
 /** 按id删除对象. */
 public void delete(final PK id) {
   Assert.notNull(id, "id不能为空");
   delete(get(id));
   logger.debug("delete entity {},id is {}", entityClass.getSimpleName(), id);
 }
コード例 #5
0
ファイル: BaseDao.java プロジェクト: snownus/lakeside-java
 /** 保存新增或修改的对象. */
 public void save(final T entity) {
   Assert.notNull(entity, "entity不能为空");
   getSession().saveOrUpdate(entity);
   logger.debug("save entity: {}", entity);
 }