This is an automated email from the ASF dual-hosted git repository.

gongchao pushed a commit to branch remove-hibernate
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git

commit e6f7afc9ea846ea00511be4fb41d3f4835465b6e
Author: tomsun28 <[email protected]>
AuthorDate: Sat Apr 20 23:41:59 2024 +0800

    use eclipse link instead of hibernate
    
    Signed-off-by: tomsun28 <[email protected]>
---
 alerter/pom.xml                                    |  6 ---
 collector/pom.xml                                  |  5 ---
 common/pom.xml                                     | 17 +++++---
 .../common/config/EclipseLinkCustomizer.java       | 49 ++++++++++++++++++++++
 .../common/config/EclipseLinkJpaConfiguration.java | 41 ++++++++++++++++++
 .../hertzbeat/common/entity/alerter/Alert.java     |  9 ++--
 .../common/entity/alerter/AlertConverge.java       |  4 +-
 .../common/entity/alerter/AlertDefine.java         | 12 +++---
 .../entity/alerter/AlertDefineMonitorBind.java     |  5 +--
 .../common/entity/alerter/AlertSilence.java        |  4 +-
 .../entity/alerter/JsonMapAttributeConverter.java  |  5 +++
 .../manager/JsonByteListAttributeConverter.java    |  5 +++
 .../manager/JsonLongListAttributeConverter.java    | 21 ++++++----
 .../manager/JsonOptionListAttributeConverter.java  |  5 +++
 .../manager/JsonStringListAttributeConverter.java  | 15 +++++--
 .../entity/manager/JsonTagAttributeConverter.java  |  4 ++
 .../manager/JsonTagListAttributeConverter.java     |  5 +++
 .../hertzbeat/common/entity/manager/Monitor.java   | 10 ++---
 .../common/entity/manager/NoticeReceiver.java      | 34 +++++++--------
 .../common/entity/manager/NoticeRule.java          |  6 +--
 .../common/entity/manager/NoticeTemplate.java      |  6 +--
 .../hertzbeat/common/entity/manager/Param.java     |  6 +--
 .../hertzbeat/common/entity/warehouse/History.java |  4 +-
 .../apache/hertzbeat/common/util/IpDomainUtil.java |  3 +-
 .../common/util/SnowFlakeIdGenerator.java          | 13 +-----
 manager/pom.xml                                    |  5 ---
 .../org/apache/hertzbeat/manager/dao/ParamDao.java |  2 +-
 .../hertzbeat/manager/pojo/dto/LoginDto.java       |  8 ++--
 28 files changed, 206 insertions(+), 103 deletions(-)

diff --git a/alerter/pom.xml b/alerter/pom.xml
index 82c7177ff..dcbce501f 100644
--- a/alerter/pom.xml
+++ b/alerter/pom.xml
@@ -53,12 +53,6 @@
             <artifactId>spring-boot-configuration-processor</artifactId>
             <optional>true</optional>
         </dependency>
-        <!-- validation -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <!-- kafka -->
         <dependency>
             <groupId>org.apache.kafka</groupId>
diff --git a/collector/pom.xml b/collector/pom.xml
index 2a37d59bd..f4887a954 100644
--- a/collector/pom.xml
+++ b/collector/pom.xml
@@ -59,11 +59,6 @@
             <groupId>org.apache.hertzbeat</groupId>
             <artifactId>hertzbeat-remoting</artifactId>
         </dependency>
-        <!-- validation -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
-        </dependency>
         <!-- run sql script-->
         <dependency>
             <groupId>org.springframework</groupId>
diff --git a/common/pom.xml b/common/pom.xml
index c24a05669..20b6683ce 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -46,20 +46,25 @@
             <artifactId>spring-boot-autoconfigure</artifactId>
         </dependency>
         <!-- jpa -->
-<!--        <dependency>-->
-<!--            <groupId>org.eclipse.persistence</groupId>-->
-<!--            <artifactId>org.eclipse.persistence.jpa</artifactId>-->
-<!--            <version>4.0.2</version>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>org.eclipse.persistence</groupId>
+            <artifactId>org.eclipse.persistence.jpa</artifactId>
+            <version>4.0.2</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.hibernate.orm</groupId>
+                    <artifactId>hibernate-core</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <!-- validation -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
-            <scope>provided</scope>
         </dependency>
         <!-- jackson -->
         <dependency>
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkCustomizer.java
 
b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkCustomizer.java
new file mode 100644
index 000000000..a848a3ce9
--- /dev/null
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkCustomizer.java
@@ -0,0 +1,49 @@
+package org.apache.hertzbeat.common.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.persistence.config.SessionCustomizer;
+import org.eclipse.persistence.descriptors.ClassDescriptor;
+import org.eclipse.persistence.mappings.DatabaseMapping;
+import org.eclipse.persistence.sessions.Session;
+
+/**
+ * change column name that from upper-case to lower-case-with-underscore
+ */
+@Slf4j
+public class EclipseLinkCustomizer implements SessionCustomizer {
+    
+    @Override
+    public void customize(Session session) throws Exception {
+        for (ClassDescriptor descriptor : session.getDescriptors().values()) {
+            for (DatabaseMapping mapping : descriptor.getMappings()) {
+                if (mapping.isDirectToFieldMapping()) {
+                    // update the column name to lower case with underscore
+                    if 
(!mapping.getField().getName().equalsIgnoreCase(mapping.getAttributeName())) {
+                        // already custom define the column name, ignore
+                        continue;
+                    }
+                    // todo here i try to change column name that from 
upper-case to lower-case-with-underscore
+                    // but failed, when update name, something relate 
exception happen more
+//                    
mapping.getField().setName(convertCamelCase(mapping.getAttributeName()));
+                }
+            }
+        }
+        
+    }
+    
+    private String convertCamelCase(String camelCase) {
+        StringBuilder result = new StringBuilder();
+        if (camelCase != null && !camelCase.isEmpty()) {
+            result.append(Character.toLowerCase(camelCase.charAt(0)));
+            for (int i = 1; i < camelCase.length(); i++) {
+                char currentChar = camelCase.charAt(i);
+                if (Character.isUpperCase(currentChar)) {
+                    
result.append('_').append(Character.toLowerCase(currentChar));
+                } else {
+                    result.append(currentChar);
+                }
+            }
+        }
+        return result.toString();
+    }
+}
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkJpaConfiguration.java
 
b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkJpaConfiguration.java
new file mode 100644
index 000000000..b59604bae
--- /dev/null
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkJpaConfiguration.java
@@ -0,0 +1,41 @@
+package org.apache.hertzbeat.common.config;
+
+import org.eclipse.persistence.config.PersistenceUnitProperties;
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration;
+import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter;
+import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter;
+import org.springframework.transaction.jta.JtaTransactionManager;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * jpa eclipselink impl config
+ */
+@Configuration
+public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {
+
+    protected EclipseLinkJpaConfiguration(DataSource dataSource, JpaProperties 
properties, 
+                                          
ObjectProvider<JtaTransactionManager> jtaTransactionManager) {
+        super(dataSource, properties, jtaTransactionManager);
+    }
+
+    @Override
+    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
+        return new EclipseLinkJpaVendorAdapter();
+    }
+
+    @Override
+    protected Map<String, Object> getVendorProperties() {
+        HashMap<String, Object> map = new HashMap<>(8);
+        map.put(PersistenceUnitProperties.DDL_GENERATION, 
"create-or-extend-tables");
+        map.put(PersistenceUnitProperties.SESSION_CUSTOMIZER, 
"org.apache.hertzbeat.common.config.EclipseLinkCustomizer");
+        map.put(PersistenceUnitProperties.LOGGING_LEVEL,"WARNING");
+        map.put(PersistenceUnitProperties.ALLOW_NATIVE_SQL_QUERIES, "true");
+        return map;
+    }
+}
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java
index daf389f2e..fe85d8ea9 100644
--- a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java
+++ b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java
@@ -17,14 +17,13 @@
 
 package org.apache.hertzbeat.common.entity.alerter;
 
+import jakarta.validation.constraints.Size;
 import org.apache.hertzbeat.common.util.JsonUtil;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -55,9 +54,7 @@ import static 
io.swagger.v3.oas.annotations.media.Schema.AccessMode.READ_WRITE;
 public class Alert {
 
     @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = 
"snow-flake-id")
-    @GenericGenerator(name = "snow-flake-id",
-            strategy = "org.apache.hertzbeat.common.util.SnowFlakeIdGenerator")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Schema(title = "Alarm record entity primary key index ID",
             description = "Alarm record entity primary key index ID",
             example = "87584674384", accessMode = READ_ONLY)
@@ -66,7 +63,7 @@ public class Alert {
     @Schema(title = "Alert target object: monitor availability-available 
metrics-app.metrics.field",
             description = "Alert target object: monitor availability-available 
metrics-app.metrics.field",
             example = "1", accessMode = READ_WRITE)
-    @Length(max = 255)
+    @Size(max = 255)
     private String target;
 
     @Schema(title = "Alarm definition ID associated with the alarm",
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java
index 5c8df4139..1db223f74 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java
@@ -18,6 +18,7 @@
 package org.apache.hertzbeat.common.entity.alerter;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -25,7 +26,6 @@ import lombok.NoArgsConstructor;
 import 
org.apache.hertzbeat.common.entity.manager.JsonByteListAttributeConverter;
 import 
org.apache.hertzbeat.common.entity.manager.JsonTagListAttributeConverter;
 import org.apache.hertzbeat.common.entity.manager.TagItem;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -63,7 +63,7 @@ public class AlertConverge {
 
     @Schema(title = "Policy name", description = "Policy name",
             example = "converge-1", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotNull
     private String name;
 
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java
index 41417272f..39864488e 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java
@@ -19,13 +19,13 @@ package org.apache.hertzbeat.common.entity.alerter;
 
 import com.google.common.base.Objects;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import 
org.apache.hertzbeat.common.entity.manager.JsonTagListAttributeConverter;
 import org.apache.hertzbeat.common.entity.manager.TagItem;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -63,24 +63,24 @@ public class AlertDefine {
     private Long id;
 
     @Schema(title = "Monitoring Type", example = "linux", accessMode = 
READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotNull
     private String app;
 
     @Schema(title = "Monitoring Metrics", example = "cpu", accessMode = 
READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotNull
     private String metric;
 
     @Schema(title = "Monitoring Metrics Field", example = "usage", accessMode 
= READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     private String field;
 
     @Schema(title = "Is Apply All Default", example = "false", accessMode = 
READ_WRITE)
     private boolean preset;
 
     @Schema(title = "Alarm Threshold Expr", example = "usage>90", accessMode = 
READ_WRITE)
-    @Length(max = 2048)
+    @Size(max = 2048)
     @Column(length = 2048)
     private String expr;
 
@@ -111,7 +111,7 @@ public class AlertDefine {
 
     @Schema(title = "Alarm Template", example = "linux {monitor_name}: 
{monitor_id} cpu usage high",
             accessMode = READ_WRITE)
-    @Length(max = 2048)
+    @Size(max = 2048)
     @Column(length = 2048)
     private String template;
 
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java
index 912b75588..06d522863 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java
@@ -23,8 +23,6 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.annotations.NotFound;
-import org.hibernate.annotations.NotFoundAction;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -75,6 +73,7 @@ public class AlertDefineMonitorBind {
     @OneToOne(fetch = FetchType.EAGER)
     @JoinColumn(name = "monitor_id", referencedColumnName = "id", foreignKey = 
@ForeignKey(ConstraintMode.NO_CONSTRAINT),
             insertable = false, updatable = false)
-    @NotFound(action = NotFoundAction.IGNORE)
+    // todo instead of @NotFound
+//    @NotFound(action = NotFoundAction.IGNORE)
     private Monitor monitor;
 }
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java
index 2e6e7409b..b51ed37a0 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java
@@ -18,6 +18,7 @@
 package org.apache.hertzbeat.common.entity.alerter;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -25,7 +26,6 @@ import lombok.NoArgsConstructor;
 import 
org.apache.hertzbeat.common.entity.manager.JsonByteListAttributeConverter;
 import 
org.apache.hertzbeat.common.entity.manager.JsonTagListAttributeConverter;
 import org.apache.hertzbeat.common.entity.manager.TagItem;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -64,7 +64,7 @@ public class AlertSilence {
     @Schema(title = "Policy name",
             description = "Policy name",
             example = "silence-1", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotNull
     private String name;
 
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java
index 834d15101..68e019c02 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java
@@ -17,15 +17,20 @@
 
 package org.apache.hertzbeat.common.entity.alerter;
 
+import jakarta.persistence.Converter;
 import org.apache.hertzbeat.common.util.JsonUtil;
 import com.fasterxml.jackson.core.type.TypeReference;
 
 import jakarta.persistence.AttributeConverter;
+import org.springframework.stereotype.Component;
+
 import java.util.Map;
 
 /**
  * json map converter
  */
+@Converter
+@Component
 public class JsonMapAttributeConverter implements 
AttributeConverter<Map<String, String>, String> {
 
     @Override
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java
index ab13cbbd9..c1facc673 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java
@@ -18,14 +18,19 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import com.fasterxml.jackson.core.type.TypeReference;
+import jakarta.persistence.Converter;
 import org.apache.hertzbeat.common.util.JsonUtil;
 
 import jakarta.persistence.AttributeConverter;
+import org.springframework.stereotype.Component;
+
 import java.util.List;
 
 /**
  * json str to list Byte converter
  */
+@Converter
+@Component
 public class JsonByteListAttributeConverter implements 
AttributeConverter<List<Byte>, String> {
 
     @Override
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java
index 6921ae1af..25b7f8969 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java
@@ -14,20 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- 
+
 package org.apache.hertzbeat.common.entity.manager;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import jakarta.persistence.AttributeConverter;
+import jakarta.persistence.Converter;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hertzbeat.common.util.JsonUtil;
+import org.springframework.stereotype.Component;
+
 import java.util.List;
 
 
 /**
  * json str to id list
  */
-
+@Converter
+@Component
 public class JsonLongListAttributeConverter implements 
AttributeConverter<List<Long>, String> {
     @Override
     public String convertToDatabaseColumn(List<Long> attribute) {
@@ -37,13 +41,16 @@ public class JsonLongListAttributeConverter implements 
AttributeConverter<List<L
 
     @Override
     public List<Long> convertToEntityAttribute(String dbData) {
-        TypeReference<List<Long>> typeReference = new TypeReference<>() {};
+        if (StringUtils.isBlank(dbData)) {
+            return List.of();   
+        }
+        TypeReference<List<Long>> typeReference = new TypeReference<>() {
+        };
         List<Long> longList = JsonUtil.fromJson(dbData, typeReference);
         if (longList == null && !dbData.isEmpty()) {
-            if (StringUtils.isNumeric(dbData)){
+            if (StringUtils.isNumeric(dbData)) {
                 return List.of(Long.parseLong(dbData));
-            }
-            else throw new NumberFormatException("String convert to Long 
error");
-        }else return longList;
+            } else throw new NumberFormatException("String convert to Long 
error");
+        } else return longList;
     }
 }
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java
index bb1b65626..2016586d3 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java
@@ -18,14 +18,19 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import com.fasterxml.jackson.core.type.TypeReference;
+import jakarta.persistence.Converter;
 import org.apache.hertzbeat.common.util.JsonUtil;
 
 import jakarta.persistence.AttributeConverter;
+import org.springframework.stereotype.Component;
+
 import java.util.List;
 
 /**
  * json str to list paramDefine.Option
  */
+@Converter
+@Component
 public class JsonOptionListAttributeConverter implements 
AttributeConverter<List<ParamDefine.Option>, String> {
 
     @Override
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java
index 2f49891f9..7d8859928 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java
@@ -14,12 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- 
+
 package org.apache.hertzbeat.common.entity.manager;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import jakarta.persistence.AttributeConverter;
+import jakarta.persistence.Converter;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.hertzbeat.common.util.JsonUtil;
+import org.springframework.stereotype.Component;
 
 import java.util.List;
 
@@ -27,6 +30,8 @@ import java.util.List;
 /**
  * Convert the list of strings to a JSON string
  */
+@Converter
+@Component
 public class JsonStringListAttributeConverter implements 
AttributeConverter<List<String>, String> {
     @Override
     public String convertToDatabaseColumn(List<String> attribute) {
@@ -36,10 +41,14 @@ public class JsonStringListAttributeConverter implements 
AttributeConverter<List
 
     @Override
     public List<String> convertToEntityAttribute(String dbData) {
-        TypeReference<List<String>> typeReference = new TypeReference<>() {};
+        if (StringUtils.isBlank(dbData)) {
+            return List.of();
+        }
+        TypeReference<List<String>> typeReference = new TypeReference<>() {
+        };
         List<String> stringList = JsonUtil.fromJson(dbData, typeReference);
         if (stringList == null && !dbData.isEmpty()) {
             return List.of(dbData);
-        }else return stringList;
+        } else return stringList;
     }
 }
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java
index a254a95a5..f5942fe48 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java
@@ -18,13 +18,17 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import com.fasterxml.jackson.core.type.TypeReference;
+import jakarta.persistence.Converter;
 import org.apache.hertzbeat.common.util.JsonUtil;
 
 import jakarta.persistence.AttributeConverter;
+import org.springframework.stereotype.Component;
 
 /**
  * json str to tag item
  */
+@Converter
+@Component
 public class JsonTagAttributeConverter implements AttributeConverter<TagItem, 
String> {
 
     @Override
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
index 791a701df..cba854483 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
@@ -18,9 +18,12 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import com.fasterxml.jackson.core.type.TypeReference;
+import jakarta.persistence.Converter;
 import org.apache.hertzbeat.common.util.JsonUtil;
 
 import jakarta.persistence.AttributeConverter;
+import org.springframework.stereotype.Component;
+
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -28,6 +31,8 @@ import java.util.stream.Collectors;
 /**
  * json str to tag list
  */
+@Converter
+@Component
 public class JsonTagListAttributeConverter implements 
AttributeConverter<List<TagItem>, String> {
 
     @Override
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java
index d40d17495..73b79f5dd 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java
@@ -17,13 +17,13 @@
 
 package org.apache.hertzbeat.common.entity.manager;
 
+import jakarta.validation.constraints.Size;
 import org.apache.hertzbeat.common.support.valid.HostValid;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -72,7 +72,7 @@ public class Monitor {
      * Monitor Name
      */
     @Schema(title = "task name", example = "Api-TanCloud.cn", accessMode = 
READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     private String name;
 
     /**
@@ -80,7 +80,7 @@ public class Monitor {
      * 监控的类型:linux,mysql,jvm...
      */
     @Schema(title = "Type of monitoring", example = "TanCloud", accessMode = 
READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     private String app;
 
     /**
@@ -88,7 +88,7 @@ public class Monitor {
      * 监控的对端host:ipv4,ipv6,域名
      */
     @Schema(title = "The host to monitor", example = "192.167.25.11", 
accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @HostValid
     private String host;
 
@@ -114,7 +114,7 @@ public class Monitor {
      * 监控备注描述
      */
     @Schema(title = "Monitor note description", example = "Availability 
monitoring of the SAAS website TanCloud", accessMode = READ_WRITE)
-    @Length(max = 255)
+    @Size(max = 255)
     private String description;
 
     /**
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java
index 5cb2513cf..20fd5b6c0 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java
@@ -18,11 +18,11 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -59,7 +59,7 @@ public class NoticeReceiver {
 
     @Schema(title = "Recipient name", description = "Recipient name",
             example = "tom", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotNull
     private String name;
 
@@ -78,33 +78,33 @@ public class NoticeReceiver {
     @Schema(title = "Mobile number: Valid when the notification method is SMS",
             description = "Mobile number: Valid when the notification method 
is SMS",
             example = "18923435643", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     private String phone;
 
     @Schema(title = "Email account: Valid when the notification method is 
email",
             description = "Email account: Valid when the notification method 
is email",
             example = "[email protected]", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     private String email;
 
     @Schema(title = "URL address: The notification method is valid for 
webhook",
             description = "URL address: The notification method is valid for 
webhook",
             example = "https://www.tancloud.cn";, accessMode = READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String hookUrl;
 
     @Schema(title = "openId : The notification method is valid for WeChat 
official account, enterprise WeChat robot or FlyBook robot",
             description = "openId : The notification method is valid for 
WeChat official account, enterprise WeChat robot or FlyBook robot",
             example = "343432", accessMode = READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String wechatId;
 
     @Schema(title = "Access token : The notification method is valid for 
DingTalk robot",
             description = "Access token : The notification method is valid for 
DingTalk robot",
             example = "34823984635647", accessMode = READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String accessToken;
 
@@ -121,7 +121,7 @@ public class NoticeReceiver {
     @Schema(title = "URL address: The notification method is valid for Slack",
             description = "URL address: The notification method is valid for 
Slack",
             example = "https://hooks.slack.com/services/XXXX/XXXX/XXXX";, 
accessMode = READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String slackWebHookUrl;
 
@@ -143,63 +143,63 @@ public class NoticeReceiver {
     @Schema(title = "Discord channel id: The notification method is valid for 
Discord",
             description = "Discord channel id: The notification method is 
valid for Discord",
             example = "1065303416030642266", accessMode = READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String discordChannelId;
 
     @Schema(title = "Discord bot token: The notification method is valid for 
Discord",
             description = "Discord bot token: The notification method is valid 
for Discord",
             example = "MTA2NTMwMzU0ODY4Mzg4MjUzNw.xxxxx.xxxxxxx", accessMode = 
READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String discordBotToken;
 
     @Schema(title = "huawei cloud SMN ak: If the notification method is valid 
for huawei cloud SMN",
             description = "huawei cloud SMN ak: If the notification method is 
valid for huawei cloud SMN",
             example = "NCVBODJOEYHSW3VNXXXX", accessMode = READ_WRITE)
-    @Length(max = 22)
+    @Size(max = 22)
     @Column(length = 22)
     private String smnAk;
 
     @Schema(title = "huawei cloud SMN sk: If the notification method is valid 
for huawei cloud SMN",
             description = "huawei cloud SMN sk: If the notification method is 
valid for huawei cloud SMN",
             example = "nmSNhUJN9MlpPl8lfCsgdA0KvHCL9JXXXX", accessMode = 
READ_WRITE)
-    @Length(max = 42)
+    @Size(max = 42)
     @Column(length = 42)
     private String smnSk;
 
     @Schema(title = "huawei cloud SMN projectId: If the notification method is 
valid for huawei cloud SMN",
             description = "huawei cloud SMN projectId: If the notification 
method is valid for huawei cloud SMN",
             example = "320c2fb11edb47a481c299c1XXXXXX", accessMode = 
READ_WRITE)
-    @Length(max = 32)
+    @Size(max = 32)
     @Column(length = 32)
     private String smnProjectId;
 
     @Schema(title = "huawei cloud SMN region: If the notification method is 
valid for huawei cloud SMN",
             description = "huawei cloud SMN region: If the notification method 
is valid for huawei cloud SMN",
             example = "cn-east-3", accessMode = READ_WRITE)
-    @Length(max = 32)
+    @Size(max = 32)
     @Column(length = 32)
     private String smnRegion;
 
     @Schema(title = "huawei cloud SMN TopicUrn: If the notification method is 
valid for huawei cloud SMN",
             description = "huawei cloud SMN TopicUrn: If the notification 
method is valid for huawei cloud SMN",
             example = "urn:smn:cn-east-3:xxx:hertzbeat_test", accessMode = 
READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String smnTopicUrn;
 
     @Schema(title = "serverChanToken : The notification method is valid for 
ServerChan",
             description = "serverChanToken : The notification method is valid 
for ServerChan",
             example = "SCT193569TSNm6xIabdjqeZPtOGOWcvU1e", accessMode = 
READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String serverChanToken;
 
     @Schema(title = "Gotify token : The notification method is valid for 
Gotify",
             description = "Gotify token : The notification method is valid for 
Gotify",
             example = "A845h__ZMqDxZlO", accessMode = READ_WRITE)
-    @Length(max = 300)
+    @Size(max = 300)
     @Column(length = 300)
     private String gotifyToken;
 
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
index d5b35d174..69c879c2d 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
@@ -18,11 +18,11 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -61,7 +61,7 @@ public class NoticeRule {
     @Schema(title = "Policy name",
             description = "Policy name",
             example = "dispatch-1", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotNull
     private String name;
 
@@ -86,7 +86,7 @@ public class NoticeRule {
     @Schema(title = "Template identification",
             description = "Template identification",
             example = "demo", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     private String templateName;
 
     @Schema(title = "Whether to enable this policy",
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java
index 1b3fcb2b3..365c2c964 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java
@@ -18,11 +18,11 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedBy;
@@ -62,7 +62,7 @@ public class NoticeTemplate {
     @Schema(title = "Template name",
             description = "Template name",
             example = "dispatch-1", accessMode = READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotBlank
     private String name;
 
@@ -93,7 +93,7 @@ public class NoticeTemplate {
                     "${priorityLabel} : ${priority}\n" +
                     "${triggerTimeLabel} : ${triggerTime}\n" +
                     "${contentLabel} : ${content}", accessMode = READ_WRITE)
-    @Length(max = 60000)
+    @Size(max = 60000)
     @Lob
     @NotBlank
     private String content;
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java 
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java
index 1b4e46cc0..fa18f24c7 100644
--- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java
+++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java
@@ -18,11 +18,11 @@
 package org.apache.hertzbeat.common.entity.manager;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -68,7 +68,7 @@ public class Param {
      * Parameter Field Identifier
      */
     @Schema(title = "Parameter identifier field", example = "port", accessMode 
= READ_WRITE)
-    @Length(max = 100)
+    @Size(max = 100)
     @NotNull
     private String field;
 
@@ -76,7 +76,7 @@ public class Param {
      * Param Value
      */
     @Schema(title = "parameter values", example = "8080", accessMode = 
READ_WRITE)
-    @Length(max = 8126)
+    @Size(max = 8126)
     @Column(name = "`value`", length = 8126)
     private String value;
 
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java
 
b/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java
index 5bbb0b5c8..0997262bf 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java
@@ -22,7 +22,6 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.annotations.GenericGenerator;
 
 import jakarta.persistence.*;
 
@@ -47,8 +46,7 @@ import static 
io.swagger.v3.oas.annotations.media.Schema.AccessMode.READ_WRITE;
 public class History {
 
     @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "myid")
-    @GenericGenerator(name = "myid", strategy = 
"org.apache.hertzbeat.common.util.SnowFlakeIdGenerator")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Schema(description = "Metric data history entity primary key index ID", 
example = "87584674384", accessMode = READ_ONLY)
     private Long id;
 
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java 
b/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java
index b143888a2..09cf40e6a 100644
--- a/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java
+++ b/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java
@@ -20,6 +20,7 @@ package org.apache.hertzbeat.common.util;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.hertzbeat.common.constants.CollectorConstants;
 import org.apache.http.conn.util.InetAddressUtils;
+import org.springframework.util.StringUtils;
 
 import java.net.Inet4Address;
 import java.net.InetAddress;
@@ -110,7 +111,7 @@ public class IpDomainUtil {
      * @return IP address type
      */
     public static String checkIpAddressType(String ipDomain){
-        if (InetAddressUtils.isIPv6Address(ipDomain)) {
+        if (StringUtils.hasText(ipDomain) && 
InetAddressUtils.isIPv6Address(ipDomain)) {
             return CollectorConstants.IPV6;
         }
         return CollectorConstants.IPV4;
diff --git 
a/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java
 
b/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java
index f9b591a00..f6f287e1c 100644
--- 
a/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java
+++ 
b/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java
@@ -17,16 +17,10 @@
 
 package org.apache.hertzbeat.common.util;
 
-import org.hibernate.HibernateException;
-import org.hibernate.engine.spi.SharedSessionContractImplementor;
-import org.hibernate.id.IdentifierGenerator;
-
-import java.io.Serializable;
-
 /**
  * Snowflake Algorithm Generator Tool
  */
-public class SnowFlakeIdGenerator implements IdentifierGenerator {
+public class SnowFlakeIdGenerator {
 
     private static final SnowFlakeIdWorker ID_WORKER;
     
@@ -34,11 +28,6 @@ public class SnowFlakeIdGenerator implements 
IdentifierGenerator {
         ID_WORKER = new SnowFlakeIdWorker();
     }
 
-    @Override
-    public Serializable generate(SharedSessionContractImplementor s, Object 
obj) throws HibernateException {
-        return SnowFlakeIdGenerator.generateId();
-    }
-
     public static long generateId() {
         return ID_WORKER.nextId();
     }
diff --git a/manager/pom.xml b/manager/pom.xml
index 7b9802206..3e50ba254 100644
--- a/manager/pom.xml
+++ b/manager/pom.xml
@@ -138,11 +138,6 @@
             <groupId>org.yaml</groupId>
             <artifactId>snakeyaml</artifactId>
         </dependency>
-        <!-- validation -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
-        </dependency>
         <!--sureness-->
         <dependency>
             <groupId>com.usthe.sureness</groupId>
diff --git 
a/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java 
b/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java
index 94a1ff59e..aed48ae31 100644
--- a/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java
+++ b/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java
@@ -35,7 +35,7 @@ public interface ParamDao extends JpaRepository<Param, Long> {
      * @param monitorId Monitor ID          监控任务ID
      * @return list of parameter values     参数值列表
      */
-    List<Param> findParamsByMonitorId(long monitorId);
+    List<Param> findParamsByMonitorId(Long monitorId);
 
     /**
      * Remove the parameter list associated with the monitoring ID based on it
diff --git 
a/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java 
b/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java
index a285bff01..11185efbd 100644
--- a/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java
+++ b/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java
@@ -18,12 +18,12 @@
 package org.apache.hertzbeat.manager.pojo.dto;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Size;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
-import org.hibernate.validator.constraints.Range;
 
 import jakarta.validation.constraints.NotBlank;
 
@@ -45,7 +45,7 @@ public class LoginDto {
      * 1. Account (email username and mobile phone number) password login 2. 
github login 3. WeChat login
      */
     @Schema(description = "类型", example = "1", accessMode = READ_ONLY)
-    @Range(min = 0, max = 4, message = "1.账户(邮箱用户名手机号)密码登录 2.github登录 3.微信登录")
+    @Max(value = 4, message = "1. Account (email username and mobile phone 
number) password login 2. github login 3. WeChat login")
     private Byte type;
 
     /**
@@ -60,7 +60,7 @@ public class LoginDto {
      */
     @Schema(description = "密钥", example = "1", accessMode = READ_ONLY)
     @NotBlank(message = "Credential can not null")
-    @Length(max = 512, message = "credential max length 512")
+    @Size(max = 512, message = "credential max length 512")
     private String credential;
 
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to