diff --git a/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/config/MilvusPropertiesConfiguration.java b/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/config/MilvusPropertiesConfiguration.java index da9ef06..212c878 100644 --- a/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/config/MilvusPropertiesConfiguration.java +++ b/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/config/MilvusPropertiesConfiguration.java @@ -22,4 +22,5 @@ public class MilvusPropertiesConfiguration { private List packages; private boolean openLog; private String logLevel; + private boolean banner = true; } \ No newline at end of file diff --git a/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/service/MilvusInit.java b/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/service/MilvusInit.java index 48dc9e1..4364dc5 100644 --- a/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/service/MilvusInit.java +++ b/milvus-plus-boot-starter/src/main/java/org/dromara/milvus/plus/service/MilvusInit.java @@ -31,7 +31,7 @@ public class MilvusInit extends AbstractMilvusClientBuilder implements Initializ } public void initialize() { - printBanner(); + maybePrintBanner(); LogLevelController.setLoggingEnabledForPackage("org.dromara.milvus.plus", milvusPropertiesConfiguration.isOpenLog(), milvusPropertiesConfiguration.getLogLevel()); @@ -47,6 +47,12 @@ public class MilvusInit extends AbstractMilvusClientBuilder implements Initializ return client; } + public void maybePrintBanner() { + if (milvusPropertiesConfiguration.isBanner()) { + printBanner(); + } + } + public void printBanner() { String banner = " __ __ _ _ ____ _ \n" + diff --git a/milvus-plus-core/pom.xml b/milvus-plus-core/pom.xml index f8e1b23..acf4224 100644 --- a/milvus-plus-core/pom.xml +++ b/milvus-plus-core/pom.xml @@ -28,7 +28,7 @@ io.milvus milvus-sdk-java - 2.5.1 + 2.5.2 org.apache.logging.log4j diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/cache/PropertyCache.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/cache/PropertyCache.java index 4570f71..c319d24 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/cache/PropertyCache.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/cache/PropertyCache.java @@ -9,6 +9,8 @@ public class PropertyCache { public Map functionToPropertyMap = new HashMap<>(); //属性名称->集合属性名称 + public Map nullableToPropertyMap = new HashMap<>(); //属性名称->是否允许为空 + public Map methodToPropertyMap = new HashMap<>(); //属性get方法名称->集合属性名称 diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java index f6a8159..3eefe84 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java @@ -100,6 +100,7 @@ public class MilvusConverter { String fieldName = fieldAnnotation.name().isEmpty() ? field.getName() : fieldAnnotation.name(); // 缓存属性名与函数名的映射 propertyCache.functionToPropertyMap.put(field.getName(), fieldName); + propertyCache.nullableToPropertyMap.put(field.getName(),fieldAnnotation.nullable()); propertyCache.methodToPropertyMap.put(getGetMethodName(field), fieldName); // 处理主键字段 if (fieldAnnotation.isPrimaryKey()) { diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java index ad392c6..1fcc2c5 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java @@ -114,7 +114,9 @@ public class LambdaInsertWrapper extends AbstractChainWrapper implements String key = entry.getKey(); Object value = entry.getValue(); String tk = propertyCache.functionToPropertyMap.get(key); - GsonUtil.put(jsonObject,tk,value); + if (StringUtils.isNotEmpty(tk)) { + GsonUtil.put(jsonObject,tk,value); + } } if(conversionCache.isAutoID()){ GsonUtil.put(jsonObject,pk,IdWorkerUtils.nextId()); diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaUpdateWrapper.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaUpdateWrapper.java index d6dea47..f02f908 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaUpdateWrapper.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaUpdateWrapper.java @@ -676,6 +676,9 @@ public class LambdaUpdateWrapper extends AbstractChainWrapper implements W public MilvusResp update(T entity) throws MilvusException { // 获取主键字段 String primaryKeyField = CollectionToPrimaryCache.collectionToPrimary.get(collectionName); + if (StringUtils.isNotEmpty(primaryKeyField)) { + throw new MilvusException("not find primary key", 400); + } // 将实体转换为属性映射 Map propertiesMap = getPropertiesMap(entity); PropertyCache propertyCache = conversionCache.getPropertyCache(); @@ -695,14 +698,18 @@ public class LambdaUpdateWrapper extends AbstractChainWrapper implements W hasPrimaryKey = true; primaryKeyValue = value; } - // 添加到更新对象 - GsonUtil.put(updateObject,tableNameColumn, value); + // 校验是否为空 + if (StringUtils.isNotEmpty(tableNameColumn)) { + // 添加到更新对象 + GsonUtil.put(updateObject,tableNameColumn, value); + } } // 检查是否需要构建查询条件 boolean needBuildQuery = !hasPrimaryKey; if (hasPrimaryKey) { for (Map.Entry property : propertyCache.functionToPropertyMap.entrySet()) { - if (updateObject.get(property.getValue()) == null) { + Boolean nullable = propertyCache.nullableToPropertyMap.get(property.getKey()); + if (updateObject.get(property.getValue()) == null&&!nullable) { needBuildQuery = true; eq(primaryKeyField,primaryKeyValue); break; @@ -783,7 +790,9 @@ public class LambdaUpdateWrapper extends AbstractChainWrapper implements W Object value = entry.getValue(); // 根据PropertyCache转换属性名 String tk = propertyCache.functionToPropertyMap.get(key); - GsonUtil.put(jsonObject,tk, value); + if (StringUtils.isNotEmpty(tk)) { + GsonUtil.put(jsonObject,tk, value); + } } // 检查是否包含主键 if (!jsonObject.has(pk)) { @@ -796,7 +805,8 @@ public class LambdaUpdateWrapper extends AbstractChainWrapper implements W for (JsonObject updateObject : jsonObjects) { boolean isBuild=false; for (Map.Entry property : propertyCache.functionToPropertyMap.entrySet()) { - if (updateObject.get(property.getValue()) == null) { + Boolean nullable = propertyCache.nullableToPropertyMap.get(property.getKey()); + if (updateObject.get(property.getValue()) == null&&!nullable) { //缺少数据需要 isBuild=true; } diff --git a/milvus-plus-parent/pom.xml b/milvus-plus-parent/pom.xml index 36166a5..9be102a 100644 --- a/milvus-plus-parent/pom.xml +++ b/milvus-plus-parent/pom.xml @@ -30,7 +30,7 @@ - 2.2.3 + 2.2.4-M1 ${java.version} ${java.version} 3.11.0 diff --git a/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/entity/MilvusPropertiesConfiguration.java b/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/entity/MilvusPropertiesConfiguration.java index 0c44129..20196f9 100644 --- a/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/entity/MilvusPropertiesConfiguration.java +++ b/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/entity/MilvusPropertiesConfiguration.java @@ -22,4 +22,5 @@ public class MilvusPropertiesConfiguration { private List packages; private boolean openLog; private String logLevel; + private boolean banner = true; } \ No newline at end of file diff --git a/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/service/MilvusInit.java b/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/service/MilvusInit.java index 4b0bcab..8e3c1e8 100644 --- a/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/service/MilvusInit.java +++ b/milvus-plus-solon-plugin/src/main/java/org/dromara/solon/service/MilvusInit.java @@ -16,7 +16,7 @@ public class MilvusInit extends AbstractMilvusClientBuilder implements Lifecycle //see https://solon.noear.org/article/324 @Bean public MilvusClientV2 init(MilvusPropertiesConfiguration milvusPropertiesConfiguration) { - printBanner(); + maybePrintBanner(milvusPropertiesConfiguration); LogLevelController.setLoggingEnabledForPackage("org.dromara.milvus.plus", milvusPropertiesConfiguration.isOpenLog(), milvusPropertiesConfiguration.getLogLevel()); @@ -36,6 +36,12 @@ public class MilvusInit extends AbstractMilvusClientBuilder implements Lifecycle // super.close(); } + public void maybePrintBanner(MilvusPropertiesConfiguration propertiesConfiguration) { + if (propertiesConfiguration.isBanner()) { + printBanner(); + } + } + public void printBanner() { String banner = " __ __ _ _ ____ _ \n" + diff --git a/milvus-spring-demo/pom.xml b/milvus-spring-demo/pom.xml index e211250..c4e033b 100644 --- a/milvus-spring-demo/pom.xml +++ b/milvus-spring-demo/pom.xml @@ -21,7 +21,7 @@ org.dromara.milvus-plus milvus-plus-boot-starter - 2.2.2 + 2.2.4-M1