Le test que je cherchais à faire passer nécessite deux classes :

class ClassA extends Database::ModelObject
{
    public static $attributes=array(
        'attribute_1'=>array('type'=>'varchar(255)','i18n'=>true),
        'attribute_2'=>array('type'=>'varchar(255)', 'default'=>'default text'),        
    );       
}
 
class ClassB extends ClassA
{
    public static $attributes=array(
        'attribute_3'=>array('type'=>'varchar(255)','i18n'=>true)
    );       
}

Lors d'un appel du finder dynamique,

class TestOfFinder extends UnitTestCase
{
    public function testFind()
    {   
        $test='condition text';
        $test_2='condition text 2';
        Database::ModelObject::ClassB_find_by_attribute_1('string to find', 
                                                           array('limit' => array(0,1),        
                                                                 'conditions' => array('string' => 'attribute_2={varchar(255):var_1} and attribute_3={varchar(255):var_2}',
                                                                                       'var_1' => $test,
                                                                                       'var_2' => $test_2,
                                                                                       )         
                                                                )); 
    } 
}

si la procédure stockée nécessaire à l'abstraction n'existe pas, elle est créée dynamiquement via la commande SQL suivante :

CREATE procedure ClassB_find_by_attribute_1_attribute_2_equal_var_1_and_attribute_3_equal_var_2_limit(attribute_1 varchar(255),var_1 varchar(255),var_2 varchar(255))
 
SELECT ClassB.id,ClassB_i18n.attribute_3,ClassA_i18n.attribute_1,ClassA.attribute_2 FROM ClassB JOIN ClassB_i18n ON ClassB.id =ClassB_i18n.ClassB_id JOIN ClassA ON ClassB.parent_id=ClassA.id JOIN ClassA_i18n ON ClassA.id=ClassA_i18n.ClassA_id WHERE culture=culture AND attribute_1=attribute_1 AND attribute_2=var_1 AND attribute_3=var_2;

Seulement, l'identifiant unique de la procédure : "ClassB_find_by_attribute_1_attribute_2_equal_var_1_and_attribute_3_equal_var_2_limit" déclanchait une erreur 1059.

Pour contourner ce problème, il faut executer la requête suivante :

ALTER TABLE `mysql`.`proc` CHANGE `name` `name` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL  
 ALTER TABLE `mysql`.`proc` CHANGE `specific_name` `specific_name` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL

et ainsi passer de type varchar(64) à varchar(255) pour le champ correspondant au nom de requête. Petite contrainte : nécessite un accés root sur mysql.