防止尝试存储超出VARCHAR2数据库字段容纳的更多文本的正确方法是什么?
假设REGISTRATIONS表的PARTNER_ROLE字段声明为VARCHAR2(80)。
此字段在Java的Registration类中映射为
public class Registration {
@Column(name=”PARTNER_ROLE” length=”80”)
private String partnerRole;
}
但是,setPartnerRole()方法允许用户填充任何长度的字符串。仅当随后尝试插入或更新REGISTRATIONS记录时,才会遇到此问题。甲骨文抱怨。
处理这种情况的正确方法是什么?
最佳答案
您可以使用JSR-303 Bean验证批注对字段进行最大长度的批注,然后可以使用验证程序来检查这些批注是否得到满足,例如当setter被调用时。这也可以用来自动为您提供有意义的错误消息。
public class Registration {
@Size(max = 80)
@Column(name=”PARTNER_ROLE” length=”80”)
private String partnerRole;
// you need to get this from somewhere, but this depends on your environment
private ValidatorFactory validatorFactory;
public Set<ConstraintViolation<Registration>> validate() {
Validator validator = validatorFactory.getValidator();
return validator.<Registration>validate(this);
}
}
关于java - 如何对相关的Java字符串强制执行DB字段大小限制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2744393/