Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 3 posts ] 
Author Message
 Post subject: Trois classes liées par des clefs composées de foreign keys
PostPosted: Tue Nov 30, 2010 8:23 am 
Newbie

Joined: Tue Nov 30, 2010 8:18 am
Posts: 8
Bonjour à tous,


J'ai parcouru de nombreux forums et tutos Hibernate français et anglais, mais je peine à trouver un cas aussi complexe que le mien...

Je dois développer une appli Java où trois classes DossierREG.java, Beneficiaire.java, DepenseBeneficiaire.java sont liées de la manière suivante :
- Un DossierREG contient un Set<Beneficiaire>.
- Un Beneficiaire contient un Set<DepenseBeneficiaire>.

De plus :
- Chacune des trois classes contient un identifiant du type NomDeLaClasseId.java : le précédent développeur de mon appli a, pour une raison que mon statut de débutante Hibernate m'empêche de comprendre, créé une classe NomDeLaClasseId pour chaque classe ou presque, et y toucher casse l'appli.
- La PK du DossierREG est composée d'un ID unique généré en faisant un select max(id)+1 sur la classe (ne vous fiez pas aux @Parameter nomtable_seq), et de l'ID de l'action.
- La PK du Beneficiaire est aussi composée d'un ID généré, combiné à l'ID du dossier et à l'ID de l'action.
- La PK de la DepenseBeneficiaire est composée de l'ID du dossier, de l'ID de l'action, de l'ID du Beneficiaire, et de l'ID du type de la DepenseBeneficiaire.

Je ne peux malheureusement pas toucher à la structure SQL car je ne suis pas la seule à m'appuyer sur cette base de données, et mon appli doit donc s'adapter à ces contraintes !

Si mon appli ne contient que des DossierREG et des Beneficiaire, tout va bien, j'enregistre en BDD sans souci, mais lorsque je rajoute un Set<DepenseBeneficiaire> à ma classe Beneficiaire, Hibernate me sort l'erreur suivante :

org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: fr.site.hibernate.classes.DepenseBeneficiaire.beneficiaire in fr.site.hibernate.classes.Beneficiaire.depenses

J'en déduis que mon mapping par beneficiaire n'aboutit pas là où je veux, et que les DepenseBeneficiaire n'arrivent pas à faire le lien avec les Beneficiaire...


Est-ce que quelqu'un de plus calé que moi pourrait me donner une piste, me dire quelles annotations corriger, ou quel mapping ajouter, s'il-vous-plaît ?

Je code sur Eclipse Galileo 3.5.1, avec le jdk.1.6.0_12, et Hibernate 3.


DossierREG.java
Code:
@Entity
@Table(name="dossier")
public class DossierREG implements Serializable
{
   private static final long serialVersionUID = -4550370284540235670L;

   
   public static final String FIELD_ID = "idDossierREG";
   public static final String FIELD_IDWEB = "idDossierWeb";
   public static final String FIELD_BENEFICIAIRES = "beneficiaires";
   
   private DossierREGId idDossierREG;
   private Long idDossierWeb;
   private Set<Beneficiaire> beneficiaires;
   
   
   @EmbeddedId
   @AttributeOverrides
   ({
      @AttributeOverride(name="numero", column=@Column(name="id", length=45))
   })
   @AssociationOverrides
   ({
      @AssociationOverride(name="action", joinColumns=@JoinColumn(name="action_id", referencedColumnName="id"))
   })
   @GeneratedValue(generator="idDossierWebGenerator",strategy=GenerationType.TABLE)
   @GenericGenerator
   (
      name="idDossierWebGenerator",
      strategy="fr.site.hibernate.utils.TableHiLoCompositeIdGenerator",
      parameters=
      {
         @Parameter(name="table", value="dossier_seq"),
         @Parameter(name="column", value="id"),
         @Parameter(name="max_lo", value="0"),
         @Parameter(name="primaryKeyGetter", value="getIdDossierREG"),
         @Parameter(name="fieldSetter", value="setNumero"),
         @Parameter(name="returnIncrementedValue", value="true")
      }
   )
   public DossierREGId getIdDossierREG() {
      return idDossierREG;
   }
   public void setIdDossierREG(DossierREGId idDossierREG) {
      this.idDossierREG = idDossierREG;
      if(idDossierWeb == null)
      {
         try
         {
            idDossierWeb = Long.parseLong(idDossierREG.getNumero());
         }
         catch(NumberFormatException e) {}
      }
   }
   @Transient
   @NotNull
   @Valid
   public String getNumero()
   {
      return idDossierREG.getNumero();
   }
   public void setNumero(String numero)
   {
      idDossierREG.setNumero(numero);
   }
   @ManyToOne
   @JoinColumn(name="action_id", insertable=false, updatable=false)
   @NotNull
   @Valid
   public Action getAction()
   {
      return idDossierREG.getAction();
   }
   public void setAction(Action action)
   {
      idDossierREG.setAction(action);
   }
   @Column(name="idweb", precision=10)
   public Long getIdDossierWeb() {
      return idDossierWeb;
   }
   public void setIdDossierWeb(Long idDossierWeb) {
      this.idDossierWeb = idDossierWeb;
   }
   @OneToMany(mappedBy="dossierREG")
   @Cascade({CascadeType.ALL})
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="id"),
      @JoinColumn(name="action_id", referencedColumnName="action_id")
   })
   public Set<Beneficiaire> getBeneficiaires() throws Exception {
      return beneficiaires;
   }
   public void setBeneficiaires(Set<Beneficiaire> beneficiaires) {
      this.beneficiaires = beneficiaires;
   }

   public DossierREG()
   {
      idDossierREG = new DossierREGId();
   }
   
   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof DossierREG))
         return false;
      DossierREG dossier = (DossierREG)obj;
      return
         new EqualsBuilder()
         .append(dossier.getIdDossierREG(), getIdDossierREG())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getIdDossierREG())
         .toHashCode();
   }
}



DossierREGId.java
Code:
@Embeddable
public class DossierREGId implements Serializable
{
   public static final String FIELD_NUMERO         = "numero";
   public static final String FIELD_ACTION         = "action";
   
   private static final long serialVersionUID = 594721741357431918L;
   private String numero;
   private Action action;
   
   public String getNumero() {
      return numero;
   }
   public void setNumero(String numero) {
      this.numero = numero;
   }
   public void setNumero(Long numero) {
      setNumero(numero.toString());
   }
   @ManyToOne
   public Action getAction() {
      return action;
   }
   public void setAction(Action action) {
      this.action = action;
   }
   
   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof DossierREGId))
         return false;
      DossierREGId id = (DossierREGId)obj;
      return
         new EqualsBuilder()
         .append(id.getNumero(), getNumero())
         .append(id.getAction(), getAction())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getNumero())
         .append(getAction())
         .toHashCode();
   }
}



Beneficiaire.java
Code:
@Entity
@Table(name="beneficiaire")
public class Beneficiaire implements Serializable
{
   public enum TypeBeneficiaire
   {
      ADHERENT      ("A", "A"),
      FOURNISSEUR      ("F", "F"),
      ORGANISME      ("O", "O"),
      STAGIAIRE      ("S", "S");
      
      private String identifier;
      private String libelle;
      
      public String getIdentifier() {
         return identifier;
      }
      public String getLibelle() {
         return libelle;
      }
      
      private TypeBeneficiaire(String identifier, String libelle)
      {
         this.identifier = identifier;
         this.libelle = libelle;
      }
      
      public static TypeBeneficiaire value(String identifier)
      {
         TypeBeneficiaire result = null;
         for(TypeBeneficiaire typeBeneficiaire: values())
         {
            if(typeBeneficiaire.getIdentifier().equals(identifier))
            {
               result = typeBeneficiaire;
               break;
            }
         }
         return result;
      }
   }
   
   private static final long serialVersionUID = 3872180192633198521L;
   public static final String FIELD_IDBENEFICIAIRE = "identifier";
   public static final String FIELD_DOSSIERREG = "dossierREG";
   public static final String FIELD_ID = "id";
   public static final String FIELD_DEPENSES = "depenses";
   
   private BeneficiaireId identifier;
   private String numeroFacture;
   private Date dateFacture;
   private TypeBeneficiaire typeBeneficiaire;
   private Long stagiaire_Id;
   private Long adherent_Id;
   private Long fournisseur_Id;
   private Long organisme_Id;
   private int id;
   private Set<DepenseBeneficiaire> depenses;
   
   @EmbeddedId
   @AttributeOverrides
   ({
      @AttributeOverride(name="id", column=@Column(name="id", length=10))
   })
   @AssociationOverrides
   ({
      @AssociationOverride
      (
         name="dossierREG",
         joinColumns=
         {
            @JoinColumn(name="dossier_id", referencedColumnName="id"),
            @JoinColumn(name="action_id", referencedColumnName="action_id")
         }
      )
   })
   public BeneficiaireId getIdentifier() {
      return identifier;
   }
   public void setIdentifier(BeneficiaireId identifier) {
      this.identifier = identifier;
   }
   @ManyToOne
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="id", insertable=false, updatable=false),
      @JoinColumn(name="action_id", referencedColumnName="action_id", insertable=false, updatable=false)
   })
   public DossierREG getDossierREG()
   {
      return identifier.getDossierREG();
   }
   public void setDossierREG(DossierREG dossierREG)
   {
      identifier.setDossierREG(dossierREG);
   }
   @Column(name="id")
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   @Column(name="nofact")
   public String getNumeroFacture() {
      return numeroFacture;
   }
   public void setNumeroFacture(String numeroFacture) {
      this.numeroFacture = numeroFacture;
   }
   @Column(name="dtfact")
   @Valid
   public Date getDateFacture() {
      return dateFacture;
   }
   public void setDateFacture(Date dateFacture) {
      this.dateFacture = dateFacture;
   }
   @Column(name="stagiaire_id")
   public void setStagiaire_Id(Long bId) {
      this.stagiaire_Id = bId;
   }
   public Long getStagiaire_Id() {
      return stagiaire_Id;
   }
   @Column(name="fournisseur_id")
   public void setFournisseur_Id(Long bId) {
      this.fournisseur_Id = bId;
   }
   public Long getFournisseur_Id() {
      return fournisseur_Id;
   }
   @Column(name="adherent_id")
   public void setAdherent_Id(Long bId) {
      this.adherent_Id = bId;
   }
   public Long getAdherent_Id() {
      return adherent_Id;
   }
   @Column(name="organisme_id")
   public void setOrganisme_Id(Long bId) {
      this.organisme_Id = bId;
   }
   public Long getOrganisme_Id() {
      return organisme_Id;
   }
   @OneToMany(mappedBy="beneficiaire")
   @Cascade({CascadeType.ALL})
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="dossier_id"),
      @JoinColumn(name="action_id", referencedColumnName="action_id")
   })
   public Set<DepenseBeneficiaire> getDepenses() throws Exception {
      return depenses;
   }
   public void setDepenses(Set<DepenseBeneficiaire> depenses) {
      this.depenses = depenses;
   }

   
   public Beneficiaire()
   {
      identifier = new BeneficiaireId();
   }
   
   public Beneficiaire(int idBeneficiaire, TypeBeneficiaire typeBeneficiaire, Long b_id) {
      this();
      this.typeBeneficiaire = typeBeneficiaire;
      switch(this.typeBeneficiaire) {
         case ADHERENT:       setAdherent_Id(b_id);
                        break;
         case ORGANISME:    setOrganisme_Id(b_id);
                        break;
         case FOURNISSEUR:    setFournisseur_Id(b_id);
                        break;
         case STAGIAIRE:    setStagiaire_Id(b_id);   
                        break;
         default:          break;
      }
      setId(idBeneficiaire);
   }

   public Beneficiaire(DossierREG dossierREG)
   {
      this();
      setDossierREG(dossierREG);
   }
   
   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof Beneficiaire))
         return false;
      Beneficiaire beneficiaire = (Beneficiaire)obj;
      return
         new EqualsBuilder()
         .append(beneficiaire.getIdentifier(), getIdentifier())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getIdentifier())
         .toHashCode();
   }
}



BeneficiaireId.java
Code:
@Embeddable
public class BeneficiaireId implements Serializable
{
   private static final long serialVersionUID = -4762088849677965696L;
   public static final String FIELD_DOSSIERREG = "dossierREG";
   
   private DossierREG dossierREG;


   @ManyToOne
   public DossierREG getDossierREG() {
      return dossierREG;
   }
   public void setDossierREG(DossierREG dossierREG) {
      this.dossierREG = dossierREG;
   }


   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof BeneficiaireId))
         return false;
      BeneficiaireId id = (BeneficiaireId)obj;
      return
         new EqualsBuilder()
         .append(id.getDossierREG(), getDossierREG())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getDossierREG())
         .toHashCode();
   }
}



DepenseBeneficiaire.java
Code:
@Entity
@Table(name="dep_beneficiaire")
public class DepenseBeneficiaire implements Serializable
{
   public enum NatureDepense
   {
      RTT      ("01",    "Remuneration temps travail"),
      RHTT      ("16",    "Remuneration hors temps travail"),
      AF      ("17",    "Allocation formation"),
      F      ("03",    "Formation"),
      R      ("07",    "Repas"),
      HR      ("08",    "Hebergement repas"),
      T      ("09",    "Transport"),
      D      ("10",    "Divers"),
      LS      ("18",    "Location salle"),
      LM      ("19",    "Location materiel");
      
      private String identifier;
      private String libelle;
      
      public String getIdentifier() {
         return identifier;
      }
      public String getLibelle() {
         return libelle;
      }
      
      private NatureDepense(String identifier, String libelle)
      {
         this.identifier = identifier;
         this.libelle = libelle;
      }
      
      public static NatureDepense value(String identifier)
      {
         NatureDepense result = null;
         for(NatureDepense natureDepense: values())
         {
            if(natureDepense.getIdentifier().equals(identifier))
            {
               result = natureDepense;
               break;
            }
         }
         return result;
      }
   }
   
   
   private static final long serialVersionUID = -508614089121636369L;
   public static final String FIELD_ID = "identifier";
   public static final String FIELD_DOSSIERREG = "dossierREG";
   public static final String FIELD_DEPENSEID = "depense_id";
   public static final String FIELD_BENEFICIAIREID = "beneficiaire_id";
   public static final String FIELD_BENEFICIAIRETYPE = "beneficiaire_type";
   public static final String FIELD_BENEFICIAIRE = "beneficiaire";
   
   private DepenseBeneficiaireId identifier;
   private NatureDepense depense_id;
   private Long beneficiaire_id;
   private String beneficiaire_type;
   


   @EmbeddedId
   @AttributeOverrides
   ({
      @AttributeOverride(name="id", column=@Column(name="id", length=10))
   })
   @AssociationOverrides
   ({
      @AssociationOverride
      (
         name="beneficiaire",
         joinColumns=
         {
            @JoinColumn(name="dossier_id", referencedColumnName="dossier_id"),
            @JoinColumn(name="action_id", referencedColumnName="action_id")
         }
      )
   })
   public DepenseBeneficiaireId getIdentifier() {
      return identifier;
   }
   public void setIdentifier(DepenseBeneficiaireId identifier) {
      this.identifier = identifier;
   }
   @ManyToOne
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="id", insertable=false, updatable=false),
      @JoinColumn(name="action_id", referencedColumnName="action_id", insertable=false, updatable=false)
   })
   public DossierREG getDossierREG()
   {
      return identifier.getDossierREG();
   }
   public void setDossierREG(DossierREG dossierREG)
   {
      identifier.setDossierREG(dossierREG);
   }
   @Column(name="depense_id")
   @Type
   (
      type="fr.site.hibernate.utils.GenericEnumUserType",
      parameters=
      {
         @Parameter(name="enumClassName", value="fr.site.hibernate.classes.DepenseBeneficiaire$NatureDepense"),
         @Parameter(name="valueOfMethod", value="value")
      }
   )
   public void setDepense_id(NatureDepense depense_id) {
      this.depense_id = depense_id;
   }
   public NatureDepense getDepense_id() {
      return depense_id;
   }
   @Column(name="beneficiaire_id")
   public void setBeneficiaire_id(Long beneficiaire_id) {
      this.beneficiaire_id = beneficiaire_id;
   }
   public Long getBeneficiaire_id() {
      return beneficiaire_id;
   }
   @Column(name="beneficaire_type")
   public void setBeneficiaire_type(String beneficiaire_type) {
      this.beneficiaire_type = beneficiaire_type;
   }
   public String getBeneficiaire_type() {
      return beneficiaire_type;
   }
   
   public DepenseBeneficiaire()
   {
      identifier = new DepenseBeneficiaireId();
   }

   public DepenseBeneficiaire(DossierREG dossierREG)
   {
      this();
      setDossierREG(dossierREG);
   }

   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof DepenseBeneficiaire))
         return false;
      DepenseBeneficiaire DepenseBeneficiaire = (DepenseBeneficiaire)obj;
      return
         new EqualsBuilder()
         .append(DepenseBeneficiaire.getIdentifier(), getIdentifier())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getIdentifier())
         .toHashCode();
   }
}



DepenseBeneficiaireId.java
Code:
@Embeddable
public class DepenseBeneficiaireId implements Serializable
{
   private static final long serialVersionUID = 4891427738954480255L;
   public static final String FIELD_DOSSIERREG = "dossierREG";
   public static final String FIELD_BENEFICIAIRE = "beneficiaire";

   
   private DossierREG dossierREG;
   private Beneficiaire beneficiaire;

   
   @ManyToOne
   public DossierREG getDossierREG() {
      return dossierREG;
   }
   public void setDossierREG(DossierREG dossierREG) {
      this.dossierREG = dossierREG;
   }
   @ManyToOne
   public Beneficiaire getBeneficiaire() {
      return beneficiaire;
   }
   public void setBeneficiaire(Beneficiaire beneficiaire) {
      this.beneficiaire = beneficiaire;
   }
   
   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof DepenseBeneficiaireId))
         return false;
      DepenseBeneficiaireId id = (DepenseBeneficiaireId)obj;
      return
         new EqualsBuilder()
         .append(id.getDossierREG(), getDossierREG())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getDossierREG())
         .toHashCode();
   }
}



J'ai aussi posté sur developpez.com : http://www.developpez.net/forums/d10061 ... d-generes/ et dans la partie anglophone de ce forum.


Top
 Profile  
 
 Post subject: Re: Trois classes liées par des clefs composées de foreign keys
PostPosted: Wed Dec 01, 2010 5:06 am 
Newbie

Joined: Tue Nov 30, 2010 8:18 am
Posts: 8
Bon, j'arrive à lancer mon appli sans erreur Hibernate si je vire l'attribut dossierREG de DepenseBeneficiaireId.java et que je remplace ce mapping par un mapping sur beneficiaire :

DepenseBeneficiaire.java

Code:
public static final String FIELD_BENEFICIAIRE   = "beneficiaire";
   
   private DepenseBeneficiaireId identifier;

   
   @EmbeddedId
   @AssociationOverrides
   ({
      @AssociationOverride
      (
         name="beneficiaire",
         joinColumns=
         {
            @JoinColumn(name="dossier_id", referencedColumnName="dossier_id"),
            @JoinColumn(name="action_id", referencedColumnName="action_id")
         }
      )
   })
   public DepenseBeneficiaireId getIdentifier() {
      return identifier;
   }
   public void setIdentifier(DepenseBeneficiaireId identifier) {
      this.identifier = identifier;
   }
   @ManyToOne
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="dossier_id", insertable=false, updatable=false),
      @JoinColumn(name="action_id", referencedColumnName="action_id", insertable=false, updatable=false)
   })
   public Beneficiaire getBeneficiaire()
   {
      return identifier.getBeneficiaire();
   }
   public void setBeneficiaire(Beneficiaire beneficiaire)
   {
      identifier.setBeneficiaire(beneficiaire);
   }


DepenseBeneficiaireId.java

Code:
public static final String FIELD_DOSSIERREG      = "beneficiaire";
   
   private Beneficiaire beneficiaire;


   @ManyToOne
   public Beneficiaire getBeneficiaire() {
      return beneficiaire;
   }
   public void setBeneficiaire(Beneficiaire beneficiaire) {
      this.beneficiaire = beneficiaire;
   }


Ça ne sauvegarde rien en base, mais au moins ça ne génère aucun bug...


Top
 Profile  
 
 Post subject: Re: Trois classes liées par des clefs composées de foreign keys
PostPosted: Wed Dec 01, 2010 6:00 am 
Newbie

Joined: Tue Nov 30, 2010 8:18 am
Posts: 8
Bug résolu, voici les classes qu'il fallait corriger :

Beneficiaire.java

Code:
@Entity
@Table(name="beneficiaire")
public class Beneficiaire implements Serializable
{
   
   private static final long serialVersionUID = 3872180192633198521L;
   public static final String FIELD_IDBENEFICIAIRE = "identifier";
   public static final String FIELD_DOSSIERREG = "dossierREG";
   public static final String FIELD_ID = "id";
   
   private BeneficiaireId identifier;
   private int id;
   private Set<DepenseBeneficiaire> depenses;
   
   @EmbeddedId
   @AttributeOverrides
   ({
      @AttributeOverride(name="id", column=@Column(name="id", length=10))
   })
   @AssociationOverrides
   ({
      @AssociationOverride
      (
         name="dossierREG",
         joinColumns=
         {
            @JoinColumn(name="dossier_id", referencedColumnName="id"),
            @JoinColumn(name="action_id", referencedColumnName="action_id")
         }
      )
   })
   public BeneficiaireId getIdentifier() {
      return identifier;
   }
   public void setIdentifier(BeneficiaireId identifier) {
      this.identifier = identifier;
   }
   @ManyToOne
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="id", insertable=false, updatable=false),
      @JoinColumn(name="action_id", referencedColumnName="action_id", insertable=false, updatable=false)
   })
   public DossierREG getDossierREG()
   {
      return identifier.getDossierREG();
   }
   public void setDossierREG(DossierREG dossierREG)
   {
      identifier.setDossierREG(dossierREG);
   }
   @Column(name="id")
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   @OneToMany(mappedBy="beneficiaire")
   @Cascade({CascadeType.ALL})
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="dossier_id"),
      @JoinColumn(name="action_id", referencedColumnName="action_id")
   })
   public Set<DepenseBeneficiaire> getDepenses() throws Exception {
      return depenses;
   }
   public void setDepenses(Set<DepenseBeneficiaire> depenses) {
      this.depenses = depenses;
   }
   
   public Beneficiaire()
   {
      identifier = new BeneficiaireId();
   }

   public Beneficiaire(DossierREG dossierREG)
   {
      this();
      setDossierREG(dossierREG);
   }
   
   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof Beneficiaire))
         return false;
      Beneficiaire beneficiaire = (Beneficiaire)obj;
      return
         new EqualsBuilder()
         .append(beneficiaire.getIdentifier(), getIdentifier())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getIdentifier())
         .toHashCode();
   }
}



DepenseBeneficiaire.java

Code:
@Entity
@Table(name="dep_beneficiaire")
public class DepenseBeneficiaire implements Serializable
{

   private static final long serialVersionUID = 3872180192633198521L;
   public static final String FIELD_IDBENEFICIAIRE   = "identifier";
   public static final String FIELD_BENEFICIAIRE   = "beneficiaire";
   
   private DepenseBeneficiaireId identifier;

   
   @EmbeddedId
   @AssociationOverrides
   ({
      @AssociationOverride
      (
         name="beneficiaire",
         joinColumns=
         {
            @JoinColumn(name="dossier_id", referencedColumnName="dossier_id"),
            @JoinColumn(name="action_id", referencedColumnName="action_id")
         }
      )
   })
   public DepenseBeneficiaireId getIdentifier() {
      return identifier;
   }
   public void setIdentifier(DepenseBeneficiaireId identifier) {
      this.identifier = identifier;
   }
   @ManyToOne
   @JoinColumns
   ({
      @JoinColumn(name="dossier_id", referencedColumnName="dossier_id", insertable=false, updatable=false),
      @JoinColumn(name="action_id", referencedColumnName="action_id", insertable=false, updatable=false)
   })
   public Beneficiaire getBeneficiaire()
   {
      return identifier.getBeneficiaire();
   }
   public void setBeneficiaire(Beneficiaire beneficiaire)
   {
      identifier.setBeneficiaire(beneficiaire);
   }
   
   public DepenseBeneficiaire()
   {
      identifier = new DepenseBeneficiaireId();
   }

   public DepenseBeneficiaire(NatureDepense natureDepense)
   {
      this();
      setDepense_id(natureDepense);
   }
   
   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof Beneficiaire))
         return false;
      Beneficiaire beneficiaire = (Beneficiaire)obj;
      return
         new EqualsBuilder()
         .append(beneficiaire.getIdentifier(), getIdentifier())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getIdentifier())
         .toHashCode();
   }
}



DepenseBeneficiaireId.java

Code:
@Embeddable
public class DepenseBeneficiaireId implements Serializable
{
   private static final long serialVersionUID       = -4762088849677965696L;
   public static final String FIELD_DOSSIERREG      = "beneficiaire";
   
   private Beneficiaire beneficiaire;


   @ManyToOne
   public Beneficiaire getBeneficiaire() {
      return beneficiaire;
   }
   public void setBeneficiaire(Beneficiaire beneficiaire) {
      this.beneficiaire = beneficiaire;
   }


   @Override
   public boolean equals(Object obj)
   {
      if(!(obj instanceof DepenseBeneficiaireId))
         return false;
      DepenseBeneficiaireId id = (DepenseBeneficiaireId)obj;
      return
         new EqualsBuilder()
         .append(id.getBeneficiaire(), getBeneficiaire())
         .isEquals();
   }
   
   @Override
   public int hashCode()
   {
      return
         new HashCodeBuilder()
         .append(getBeneficiaire())
         .toHashCode();
   }
}


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.