I am not sur to anderstand,
In my table, the 2 concerned fields (id_race, fname) are checked as 'Required', normal, it's a Key.
The generated xml is :
<field name="id_race"
alias="_id_race_value"
label="JBREEDING_FIELD_RACES"
filter="INT"
listKey="id"
labelKey="value"
type="ckcombo"
nullLabel="JBREEDING_JSEARCH_SELECT_RACES"
required="true"
class="validate[required]">
<unique alias="fname_id_race" fields="fname,id_race"/>
</field>
<field name="fname"
alias="fname"
label="JBREEDING_FIELD_NOM"
filter="STRING"
type="cktext"
required="true"
class="validate[required]">
<unique alias="fname_id_race" fields="fname,id_race"/>
</field>
so class is "validate[required]", not "Default" ...
You can test with my project,
P -> JBreeding3.5
T-> Etalons
L-> Admin (Gestion des Etalons)
Choose 'Siberian Husky' and try to save New dog named 'CHIEN1' (already exits) ...
You get the SQL error and not the Duplicate Warning.