Java 使用Jooq和JPA'验证字段长度;s@列注释
我试图通过使用JSR303验证来验证用户输入的数据。我试图实现的一个验证是检查每个字段输入值的大小是否超过相应列的最大大小 为了将字段映射到数据库列,我使用了JPA的Java 使用Jooq和JPA'验证字段长度;s@列注释,java,validation,jpa,jooq,Java,Validation,Jpa,Jooq,我试图通过使用JSR303验证来验证用户输入的数据。我试图实现的一个验证是检查每个字段输入值的大小是否超过相应列的最大大小 为了将字段映射到数据库列,我使用了JPA的@column注释,如下所示: @ComplexValidation public class Person { @Column(table = "PERSON_DETAILS", name = "FIRST_NAME") private String firstName; } Person类上的@Comple
@column
注释,如下所示:
@ComplexValidation
public class Person {
@Column(table = "PERSON_DETAILS", name = "FIRST_NAME")
private String firstName;
}
Person类上的@ComplexValidation
注释是我尝试实现的JSR303自定义约束验证器,它基本上尝试执行以下步骤:
@Column
注释注释的类中的所有字段table(tableName)
返回一个SQLTable而不是TableImpl对象:
Column columnAnnotation = field.getDeclaredAnnotation(Column.class);
if (columnAnnotation != null) {
String tableName = columnAnnotation.table();
String fieldName = columnAnnotation.name();
TableField tableField = (TableField) ((TableImpl) table(tableName)).field(fieldName);
int columnLength = tableField.getDataType().length();
if (fieldValue.length() > columnLength) {
constraintValidatorContext
.buildConstraintViolationWithTemplate("exceeded maximum length")
.addPropertyNode(field.getName())
.addConstraintViolation();
}
}
欢迎任何其他建议:)假设您只有一个生成的架构(例如,
PUBLIC
),您可以从那里访问表:
Table<?> table = PUBLIC.getTable(tableName);
Table Table=PUBLIC.getTable(tableName);
看