@Override
  public void deleteAcl(ObjectIdentity objectIdentity, boolean deleteChildren)
      throws ChildrenExistException {
    if (deleteChildren) {
      List<ObjectIdentity> list = this.findChildren(objectIdentity);
      if (list != null) {
        for (int i = 0; i < list.size(); i++) {
          deleteAcl(list.get(i), deleteChildren);
        }
      }
    }

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("className", objectIdentity.getType());
    map.put("objectIdIdentity", objectIdentity.getIdentifier());

    String statement = this.getStatement("deleteAcl");
    List<AclObjectIdentity> selectList = this.getSqlSessionTemplate().selectList(statement, map);
    List<Object[]> list = new ArrayList<Object[]>();

    for (AclObjectIdentity vo : selectList) {
      AclClass aclClassVO = vo.getAclClassVO();
      Object[] objArray = {aclClassVO, vo};
      list.add(objArray);
    }

    if (list == null || list.isEmpty()) {
      log.error("数据不存在....");
      return;
    }
    AclObjectIdentity aclObjectIdentityVO = (AclObjectIdentity) list.get(0)[1];

    deleteIdentityVoAndEntries(aclObjectIdentityVO);

    this.aclCache.evictFromCache(objectIdentity);
  }