2017-04-10 139 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是如何工作在持久對象上的?

回答