2017-04-10 127 views
0

我有以下型号:ActiveJDBC UniquenessValidator非持久对象

Car (
    id INT(11) NOT NULL AUTO_INCREMENT, 
    name TEXT 
) 

..

public class Car extends Model { 


    static{ 
     validatePresenceOf("name"); 
     validateWith(new UniquenessValidator("name")); 
    } 

    public Car() {} 


} 

在这个模型中,我指定所有汽车的名称是唯一的。

运行下面的代码不会扔第二个实例验证错误:

Car acura_1 = new Car(); 
acura_1.set("name","Acura"); 
acura_1.saveIt(); 

Car acura_2 = new Car(); 
acura_2.set("name","Acura"); 
acura_2.saveIt(); // << surprisingly, this works! 

//acura_2.isValid(); 

我期待一个验证异常上升的acura_2.saveIt()起名字“极品”,在已经采取/本台车(即,当acura_1被持续存在时)。

看看UniquenessValidator的代码,看起来像唯一性的验证考虑了模型的id,如果我没有弄错的话。

如果最后一个注释行被执行(acura_2.isValid()),则错误消息出现在acura_2上:name - >应该是唯一的。

我想知道UniquenessValidator是如何工作在持久对象上的?

回答