我正在使用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中处理的异常。

10-07 15:52