Création de vue avec une classe implémentant "AuxiliaryDatabaseObject"
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 :
Code:
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> |
et voici le contenu de ma classe :
Code:
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;
}
} |
Dans les questions de base que je me suis posé :
- 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 !