protected void throwIfMultiple(Object parent, Object entity) {
   if (LangUtils.isMultiple(entity)) {
     String msg =
         "element of "
             + (parent == null ? "container" : parent)
             + " can not be a multiple object, element: "
             + entity;
     throw new DbmException(msg);
   }
 }
 protected void executeJFishEntityListener(
     boolean before, JFishEvent jfishEvent, Object entities, List<DbmEntityListener> listeners) {
   if (LangUtils.isMultiple(entities)) {
     List<?> list = LangUtils.asList(entities);
     for (Object entity : list) {
       this.executeJFishEntityListenerForSingle(before, jfishEvent, entity, listeners);
     }
   } else {
     this.executeJFishEntityListenerForSingle(before, jfishEvent, entities, listeners);
   }
 }
  public void doEvent(JFishEvent event) {
    Object entity = event.getObject();
    JFishInsertOrUpdateEvent insertOrUpdate = (JFishInsertOrUpdateEvent) event;

    int updateCount = 0;
    if (LangUtils.isMultiple(entity)) {
      Collection<Object> entities = CUtils.toCollection(entity);
      for (Object obj : entities) {
        if (obj == null) continue;
        throwIfMultiple(entities, obj);
        updateCount += this.onInnerEventWithSingle(obj, insertOrUpdate);
      }
    } else {
      updateCount = onInnerEventWithSingle(entity, insertOrUpdate);
    }
    event.setUpdateCount(updateCount);
  }