-
Génération schéma SQL
Bonjour,
J'utilise actuellement Hibernate avec une base Mysql.
Pour générer le schéma SQL de la base, je me sert du script Ant ''hbm2ddl".
Tout se passe bien sauf qu'une nouvelle demande a été faite, celle de rendre sensible à la casse les recherches en base (pour une colonne donnée d'une table donnée).
J'ai bien trouvé la solution, cela se passe au niveau de la création de la table, il faut que le type de la colonne soit 'varchar(255) BINARY' au lieu de 'varchar(255)' tout simple, et cela fonctionne bien.
Du coup, ce que je souhaiterais faire, mais sur quoi je butte pour l'heure, c'est automatiser ça, car actuellement, mon script Ant ne crée pas la colonne en 'BINARY', et je ne vois pas où faire figurer cette info, je pensais à mes fichiers de mapping hibernate, mais je ne vois pas où.
Est-ce que quelqu'un saurait faire çà ?
D'avance merci de votre aide.
-
Parce que tu comptes laisser l'ORM créer le schéma de la base, comme ça? Je comprend que tu puisses utiliser ça la première fois pour avoir une ébauche de script, mais prendre ce qu'il te donne tel quel ça me paraît vraiment de la folie.
-
Bah disons que pour l'heure, cela suffit, s'il manque ds indexs, je verrai à les rajouter.
Qu'est ce qui te parait si risqué ?
-
le fait que ca pourrait effacer ta base sans te prévenir, supprimer un colonne sans prévenir, etc? hbm2ddl c'est bon pour avoir une base, après faut souvent ajuster les script. T'as par exemple pas toujours besoin de 255 charactères, parfois c'est plus, parfois manque des index, parfois tu voudrais supprimer un contrainte, etc.
PS: je vois pas en quoi le schéma est lié à la casse de tes recherche. Aucune BD ne me retournera le ROW avec chmap="HELLO" si je fait un where champ="hello"
-
Attention, je ne dis pas que j'utilise la propriété 'hibernate.hbm2ddl.auto' de ma sessionFactory mais que j'utilise le script ant qui me génère un fichier sql avec les scripts sql de création du schéma avec index et contraintes.
Ensuite, ce fichier, je l'utilise au besoin.
Ensuite, dans les fichiers de mappings, tu peux décider de la longueur d'une propriété de type String, par défaut, on est d'accord, c'est effectivement 255.
Concernant les contraintes à supprimer, je suis pas trop convaincu, si le modèle objet est bien posé et les mappings ok, y'a a priori pas de raison de casser une contrainte.
Quant à la recherche insensible à la casse, je persiste et signe :
http://dev.mysql.com/doc/refman/5.0/...nsitivity.html
-
ce sont des exemple parmis d'autre (si parfois hibernante a du mal sur les bord scabreux du mapping et a besoin de faire sauter des contrainte, surtout en relations ternaires :p)
Dans ton cas, qu'est-ce qui t'empeche de modifier ton script ant pour qu'il tripatouille le fichier sql pour ajouter le BINARY (et j'ai toujours pas compris le problème de départ)
-
Normalement c'est une question de collation, la sensibilité à la casse et aux accents, par contre sous MYSQL je sais pas.
-
Bah disons que je voulais savoir si une solution "native" existait avant de mettre les mains dans le camboui.
En tout cas, merci pour vos réponses.