如何在Redis中指定id的长度

时间:2018-02-19 12:45:40

标签: java spring-boot redis spring-data-redis

如何使用Redis在Spring启动休息应用程序中从15-25个符号指定'ID'的长度约束?

Private Sub spnButton_SpinDown()
    With Me
        .txtRowNumber = CLng(.txtRowNumber) + 1
    End With
End Sub

Private Sub spnButton_SpinUp()
    With Me
        If CLng(.txtRowNumber) > 1 Then
            .txtRowNumber = CLng(.txtRowNumber) - 1
        End If
    End With
End Sub

更新

我尝试将Private Sub UserForm_Initialize() With Me .txtRowNumber = 2 .spnButton = .txtRowNumber PopulateForm .txtRowNumber End With End Sub 类型更改为@RedisHash("Foo") public class Foo implements Serializable { @Id private Long id; @Indexed private Status status; } 并将id设置为符号长度限制,但它不起作用(似乎忽略了String注释) Redis数据库使用范围:

Size

我也试过使用自定义验证器并且使用相同的行为 - 在使用Redis数据库时似乎忽略了它:

Size

验证

@RedisHash("Foo")
public class Foo implements Serializable {

  @Id
  @Size(min = 15, max = 25)
  private String id;

  @Indexed
  private Status status;
}

型号:

@Documented
@Constraint(validatedBy = DigitsLimitValidator.class)
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DigitsLimit {

  String message() default "Digits length is too short or long";

  Class<?>[] groups() default {};

  Class<? extends Payload>[] payload() default {};

  int min() default 5;

  int max() default 15;

}

在调试模式下,我无法在验证器中捕获任何断点。

在两次尝试中我都可以保存任意长度的数字。限制被忽略。为什么被忽略了?

1 个答案:

答案 0 :(得分:0)

  

如何指定ID&#39;的长度限制?从15-25符号

使用Long类型没有任何意义,因为Long.MAX_VALUE只有&#34;只有&#34; 19位数。

  

9223372036854775807

要包含这样的值,BigInteger可能是更好的选择。

您无法将@Min@Max注释添加到BigInteger字段,因为这些值仅限于Long范围。所以你不能代表25位数。

所以你有两种方式:

  • 创建a custom validator以确保您的约束得到尊重。

  • String替换数值。您可以使用javax.validation.constraints.Size注释,该注释不适用于数字字段,但适用于CharSequence字段,例如String

例如:

@Id
@Size(min=15, max=25)
private String id;