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

JPA Java Discussion :

Héritage et ManyToOne sur classe mère


Sujet :

JPA Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Héritage et ManyToOne sur classe mère
    Bonjour,
    Voici mon problème : J'ai une classe abstraite Tiers, plusieurs filles, prenons par exemple Client. Cette classe Client doit avoir une relation manyToOne vers Tiers.

    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
    31
    32
    33
    34
    35
    36
    37
     
    @Entity
    @Table(name="tiers", catalog="test")
    @Inheritance(strategy=InheritanceType.JOINED)
    @DiscriminatorColumn(name = "DISC", discriminatorType = DiscriminatorType.STRING, length = 15)
    public abstract class Tiers implements Serializable{
     
    	@Id
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	@Column(name="idTiers")
    	private Long idTiers;
     
     
    	@Column
    	private String nom;
    // accesseurs ....
    }
     
    @Entity
    @Table(name="client", catalog="test")
    public class Client extends Tiers{
     
    	private static final long serialVersionUID = 5251341341347181655L;
     
    	@Column
    	private String referenceClient;
     
     
    	@ManyToOne
    	@JoinTable( name="client_donneurOrdre", catalog="test", 
    			joinColumns=@JoinColumn(name="idTiers", referencedColumnName="idTiers"), 
    			inverseJoinColumns=@JoinColumn(name="idDonneurOrdre", referencedColumnName="idTiers", nullable=false) )
    	private Tiers donneurOrdre;
     
    // accesseurs....
     
    }
    J'obtiens un message comme quoi la table de liaison n'est pas trouvée (alors que j'ai <property name="hibernate.hbm2ddl.auto" value="update" /> dans persistence.xml).

    Soit, je créais la table de liaison à la main...
    CREATE TABLE `test`.`client_donneurOrdre` (
    `idTiers` BIGINT(11) NOT NULL,
    `idDonneurOrdre` BIGINT(11) UNSIGNED NOT NULL,
    PRIMARY KEY (`idTiers`, `idDonneurOrdre`)
    )
    ENGINE = InnoDB;

    Le résultat est le même :

    ERROR [AssertionFailure] an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
    org.hibernate.AssertionFailure: Table test.client_donneurOrdre not found


    Si j'enlève la relation manyToOne, l'héritage fonctionne correctement. Je comprends vraiment pas ce qu'il ne va pas...

    Merci de votre aide.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bon si certains ont le même problème, j'ai trouvée une solution qui me satisfait qu'à moitié mais qui à le mérite de fonctionner.

    Je préférais mapper la liaison client->donneurOrdre sur une table intermédiaire, mais c'est cà qui pause problème. En mappant de façon "plus classique" cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @ManyToOne
    	@JoinColumn(name="idDonneurOrdre", referencedColumnName="idTiers")
    	private Tiers donneurOrdre;
    Je trouve vraiment dommage de ne pas pouvoir faire cela sur une table intermédiaire (performance sur gros volume de données)... Bug hibernate ??? Je ne sais pas trop

    A+

Discussions similaires

  1. Requête sur classe mère
    Par Galak extra dans le forum Hibernate
    Réponses: 7
    Dernier message: 22/08/2008, 15h19
  2. undefined symbol sur classe mère avec dlopen
    Par Yann__ dans le forum C++
    Réponses: 18
    Dernier message: 24/04/2008, 16h03
  3. [Generics] Sur class plus héritage
    Par anthyme dans le forum C#
    Réponses: 1
    Dernier message: 24/09/2007, 23h03
  4. Réponses: 19
    Dernier message: 05/06/2007, 08h13
  5. [héritage] requête sur classe fille
    Par Galak extra dans le forum Hibernate
    Réponses: 3
    Dernier message: 25/08/2006, 10h30

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