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 :

IllegalArgumentException lors d'un mapping d'héritage ? [Mapping]


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Par défaut IllegalArgumentException lors d'un mapping d'héritage ?
    Bonjour à tous,

    Je suis confronté à un problème avec Hibernate, et je ne sais pas du tout comment faire pour le résoudre.

    J'ai une classe AbstractDocument qui possède les principales propriétés (et mappages), et 2 classes qui héritent de AbstractDocument :
    • SimpleDocument : qui hérite simplement de AbstractDocument sans rien ajouter
    • ComplianceDocument : qui possède en plus un champs "compliance" et un mapping @one-to-one avec l'objet Compliance


    J'ai choisi un héritage de type "SINGLE-TABLE".
    Lorsque je sélectionne un "ComplianceDocument", tout se passe bien.
    Mais lorsque je sélectionne un SimpleDocument, j'ai l'erreur suivante :
    java.lang.IllegalArgumentException: Can not set mon.package.ComplianceDocument field mon.package.Compliance.complianceDocument to mon.package.SimpleDocument

    Apparemment Hibernate essaye de créer la relation avec Compliance même dans le cas d'un SimpleDocument...

    Lorsque je met la propriété ComplianceDocument.compliance en transient, alors je n'ai plus cette erreur...

    Là je sèche totalement, please help !!!

    Voici mes mappings :

    AbstractDocument
    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
    @Entity
    @Table(name="document")
    @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)
    public abstract class AbstractDocument implements IVersionable {
     
    	@Version @Column(name="data_version")
    	private int dataVersion = 0;
     
    	@Id
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	private int id = 0;
     
    	@Column
    	private String reference = "";
     
    	@Column
    	private String title = "";
    	//...
    }
    SimpleDocument
    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
    @Entity
    @DiscriminatorValue("DOCUMENT")
    public class SimpleDocument extends AbstractDocument {
     
    	@Column(name="type", insertable=false, updatable=false)
    	private String type = "DOCUMENT";
     
    	public SimpleDocument(){
    		super();
    	}
     
    	public String getType() {
    		return type;
    	}
    } //Et c'est tout !
    ComplianceDocument
    @Entity
    @DiscriminatorValue("COMPLIANCE")
    public class ComplianceDocument extends AbstractDocument {

    @Column(name="type", insertable=false, updatable=false)
    private String type = "COMPLIANCE";

    @OneToOne(mappedBy="complianceDocument")
    //@Transient
    private Compliance compliance = null;

    public void setCompliance(Compliance compliance) {
    this.compliance = compliance;
    }
    //...
    }

    Compliance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Entity
    @Table(name="compliance")
    public class Compliance {
    	@Id
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	private int id = 0;
     
    	@OneToOne
    	@JoinColumn(name="document_id")
    	private ComplianceDocument complianceDocument;
    	//...
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Par défaut
    Bon j'ai résolu mon problème !
    En fait c'était un problème dû à mon jeu de test que j'avais oublié de mettre à jour

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

Discussions similaires

  1. Stratégies de mapping d'héritage avec Hibernate / JPA
    Par Ricky81 dans le forum Persistance des données
    Réponses: 10
    Dernier message: 21/06/2010, 11h58
  2. [MOSS 2007] Custom Site Map Provider : héritage et security trimming
    Par djbenito dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 10/05/2010, 15h08
  3. Conseille Mapping et héritage
    Par Polymorph dans le forum PhpMyObject
    Réponses: 0
    Dernier message: 11/11/2009, 12h20
  4. Réponses: 0
    Dernier message: 04/10/2009, 16h19
  5. [XDoclet]mapping et héritage
    Par vinceLeBarbare dans le forum Hibernate
    Réponses: 5
    Dernier message: 25/07/2006, 10h26

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