8
votes

Peut hiberner automatiquement majuscule une colonne sur lecture / insertion via la configuration?

Nous avons des colonnes avec des données qui doivent toujours être en majuscule pour assurer l'unicité. Je me demandais si Hibernate peut forcer toutes ces colonnes à majuscules via certains changements de fichier de configuration?

Nous utilisons réellement un USERType personnalisé pour les données de colonne Cryptage / décrypting pour une autre table, mais j'ai figuré que cela serait surchargé juste pour tout majuscule ...

Alternativement, je pensais à modifier les modèles de sorte que tous les getters / setters deviendront majuscules de la chaîne à venir et à partir.

Le scénario de cas pire (?) est de modifier la contrainte de colonne Oracle pour ignorer le cas tout en vérifiant l'unicité.

Toutes les pensées?


0 commentaires

5 Réponses :


1
votes

Je ne suis pas au courant des paramètres de configuration pour rendre cela possible. Cependant, vous pouvez essayer d'utiliser un Intercepteur pour corriger les données lors de l'insertion / mise à jour, comme: xxx


1 commentaires

J'ai un intercepteur contenant d'autres "trucs" que je peux laisser tomber votre idée dans ... Mais je ne vois pas d'écrire un tas de logique pour la dizaine de classes nécessitant des classes nécessitant une partie de leurs champs en majuscule.



0
votes

Je suggère de vérifier cette page: http: // forum. springsource.org/archive/index.php/t-18214.html

Il a 3 façons différentes de le faire. Je crois que la voie la moins intrusive est la suivante: xxx


1 commentaires

Je me trompe peut-être, mais je ne pense pas que le tour de formule fonctionnera pour insertion ou mises à jour (je pense que Hibernate traite les champs de fomula comme transitoire et ne les sauvegez pas dans la base de données).




1
votes

J'ai décidé de mettre en place un Usertype ... c'est aussi proche d'une configuration hibernate que je peux obtenir ... Voici le code ...

<property name="serialNumber" type="model.UpperCaseUserType">
    <column name="SERIAL_NUMBER" length="20" not-null="true" unique="true" />
</property>


0 commentaires

12
votes

Approche beaucoup plus propre:

@Column(name = "DUMMY")
@ColumnTransformer(read = "UPPER(DUMMY)")
private String dummy


0 commentaires