Bonjour,
J'ai besoin de créer une vue dans mon application. Après plusieurs mauvaises pistes, j'ai trouvé qu'il était possible de créer une vue gràce à la balise <database-object>.
Pourtant cette technique n'a pas l'air de fonctionner car je ne vois pas ma vue créée. Dans un premier temps j'avais essayé de mettre le SQL directement dans un fichier de mapping et ensuite, j'ai fait une classe qui implémente AuxiliaryDatabaseObject. A chaque fois, le mapping fonctionne bien mais ma vue n'est jamais créée. (j'ai oublié de préciser, nous créons le schéma de la base avec hibernate).
Est ce que vous avez une piste ?
Voici le mapping que j'ai mis en place :
et voici le contenu de ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <hibernate-mapping> <database-object> <definition class="com.applimetier.model.MaJolieVue"/> <dialect-scope name='org.hibernate.dialect.MySQL5InnoDBDialect' /> </database-object> </hibernate-mapping>
Dans les questions de base que je me suis posé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class MaJolieVue implements AuxiliaryDatabaseObject { @Override public String sqlCreateString(Dialect dialect, Mapping p, String defaultCatalog, String defaultSchema) throws HibernateException { StringBuilder requete = new StringBuilder(); requete.append("create or replace view maJolieVue as select * from trucMuche"); return requete.toString(); } @Override public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { return ""; } @Override public void addDialectScope(String dialectName) { System.out.println(dialectName); } @Override public boolean appliesToDialect(Dialect dialect) { return true; } }
- j'ai bien mis la référence de mon fichier dans mon fichier de conf hibernate.cfg.xml
- J'ai mis un point d'arrêt en début de chaque méthode de la classe, je ne passe que dans la méthode addDialectScope. Les méthodes sqlCreateString et sqlDropString ne sont jamais appelées
Je pencherais bien pour un problème de configuration d'hibernate, mais je n'ai rien réussi à trouver sur internet.
Merci d'avance pour vos réponses !
Partager