@Transactional(rollbackFor = Throwable.class)
    public void saveOrUpdateExt(String groupId, String streamId, List<InlongStreamExtInfo> extInfos) {
        LOGGER.info("begin to save or update inlong stream ext info, groupId={}, streamId={}, ext={}", groupId,
                streamId, extInfos);
        if (CollectionUtils.isEmpty(extInfos)) {
            return;
        }

        List<InlongStreamExtEntity> entityList =
                CommonBeanUtils.copyListProperties(extInfos, InlongStreamExtEntity::new);
        entityList.forEach(streamEntity -> {
            streamEntity.setInlongGroupId(groupId);
            streamEntity.setInlongStreamId(streamId);
        });
        streamExtMapper.insertOnDuplicateKeyUpdate(entityList);
        LOGGER.info("success to save or update inlong stream ext for groupId={}", groupId);
    }
Update field information
<p/>
First physically delete the existing field information, and then add the field information of this batch
inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java