我正在使用Java处理必须限制特定字符串存储在DB中的问题。示例:“ NAM”或“ nam”
如果某些数据“越南”(包含“ nam”)即将存储在任何列中,则我必须限制并给出某种错误或通知。
如果我们正在处理一个对象,但是如果数据库中有多个表,那么这很容易,并且在存储之前,我们需要检查每个列数据,这很麻烦。我正在寻找可以在任何对象上工作的通用代码。
最佳答案
您可以尝试使用Hibernate的检查注释:
@Entity
@Check(constraints = "col1 <> 'Vietnam' AND col2 <> 'Vietnam'")
public class YourEntity {
@Column(name = "col1")
private String col1;
@Column(name = "col2")
private String col2;
...
}
然后,如果任何实体到达的字段的值为
Vietnam
,则Hibernate应该引发异常。如果您不能使用Hibernate检查注释,则可能在数据库级别适用的一般解决方案是检查约束:
ALTER TABLE yourTable
ADD CONSTRAINT cntry_cnstr CHECK (col1 <> 'Vietnam' AND col2 <> 'Vietnam' AND ...);
尝试在包含
Vietnam
的列中插入新记录,或尝试将现有记录的列更新为Vietnam
,都会触发可以在Java中处理的异常。