IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

[Mapping] Hibernate et MySQL


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de dvicente72
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Par défaut [Mapping] Hibernate et MySQL
    Salut à tous,

    voilà j'utilise Hibernate 3.2.0GA et MySQL 5.1.17.

    Mon souci est que j'ai fait un mapping comme suit :

    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
    29
    30
     
    <class name="AbstractReportBean" abstract="true">
    		<id name="id" type="long" column="report_id">
    			<generator class="native" />
    		</id>
    		<many-to-one name="mavenProject" column="MAVENPROJECT_ID"
    			class="DashBoardMavenProject" />
    		<property name="dateGeneration" column="dateGeneration"
    			type="timestamp" />
    	</class>
    	<!-- org.codehaus.mojo.dashboard.report.plugin.beans.CheckstyleReportBean root -->
    	<!-- table="CheckstyleReportBean"  -->
    	<union-subclass name="CheckstyleReportBean"
    		table="CheckstyleReportBean" extends="AbstractReportBean">
    		<property name="nbClasses" column="nbClasses" type="int" />
    		<property name="nbInfos" column="nbInfos" type="int" />
    		<property name="nbErrors" column="nbErrors" type="int" />
    		<property name="nbWarnings" column="nbWarnings" type="int" />
    		<property name="nbTotal" column="nbTotal" type="int" />
    		<query name="getCheckstyleByDashBoardMavenProjectID">
    			<![CDATA[
    		select c from CheckstyleReportBean c,DashBoardMavenProject m where c.mavenProject = m and m.id = :id
    		]]>
    		</query>
    		<query name="getCheckstyleByPeriod">
    			<![CDATA[
    		select c from CheckstyleReportBean c,DashBoardMavenProject m where c.mavenProject = m and m.id = :id and c.dateGeneration >= :startdate and c.dateGeneration <= :enddate 
    		]]>
    		</query>
    	</union-subclass>
    et quand j'execute mon code ( ça devrait créer les tables automatiquement)

    j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: org.hibernate.MappingException: Cannot use identity column key generation with <union-subclass> mapping for: org.codehaus.mojo.dashboard.report.plugin.beans.AbstractReportBean
    Mon probleme est que je ne sais pas le résoudre sachant que le même mapping fonctionne sous Oracle 9i et Apache Derby.

    A priori, MySQL utilise un IdentityGenerator qui ne serait pas supporté avec des classes Union dans Hibernate.

    Comment contourner ça sans modifier l'ensemble du mapping ?

  2. #2
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    parceque mysql ne fait pas d'auto increment
    il faut gerer par une consultation de hsql pour voir si la liste des resultat est null , si oui mettre l'id à 1 sinon mettre en ayant recuperer max(id)
    max(id) + 1

  3. #3
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try {
    			Query q=HibernateSessionFactory.getSession().createSQLQuery("select max(idcandidat) from Candidat");
    			;candidat.setIdcandidat(( (Integer) q.list().get(0))+Integer.valueOf(1));
    		} catch (Exception e) {candidat.setIdcandidat(Integer.valueOf(1));}
    voila pour moi ca marche bonne chance

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Je ne suis pas certain que ce soit une bonne idée.
    Tu risques d'avoir des doublons d'id.

    De plus MySql gère très bien l'auto-increment, il n'y pas de soucis de ce coté là.

  5. #5
    Membre expérimenté Avatar de dvicente72
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Par défaut
    est-ce que je n'aurai pas interêt à utiliser un generator UUID pour que cela soit compatible avec tout type de base ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Je n'ai pas de problème avec un generator native avec MySql.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/12/2009, 22h49
  2. Mapping Hibernate : <composite-id>
    Par tome tome dans le forum Hibernate
    Réponses: 6
    Dernier message: 10/11/2009, 14h18
  3. fichier Mapping hibernate avec MySQL
    Par benamira dans le forum Hibernate
    Réponses: 2
    Dernier message: 17/01/2009, 05h11
  4. mapping Hibernate Mysql
    Par nihadelg dans le forum Hibernate
    Réponses: 1
    Dernier message: 11/05/2008, 16h56
  5. mapping hibernate
    Par enimiste dans le forum Hibernate
    Réponses: 11
    Dernier message: 16/05/2006, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo