Das hört sich nach einer Lösung für eine eigene Wertklasse und einen entsprechenden UserType an!
Code:
public class Code {
private final String _value;
public Code (String value) {
if (_value == null || _value.length() != 2) {
throw new IllegalArgumentException();
}
_value = value;
}
// ...
Wenn Du anstatt String jetzt Code benutzt, kann nirgendwo mehr ein zu kurzer oder zu langer String an den Objekten gesetzt werden, denn es ist typisiert...
Das ganze mappst du Du dann mit einem eigenen UserType. Du findest hier ein Beispiel:
ItemStateUserType (aus dem CaveatEmptor-Beispiel).