Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 3 posts ] 
Author Message
 Post subject: probleme avec @IdClass et @ManyToOne
PostPosted: Wed Jan 27, 2010 10:23 am 
Newbie

Joined: Wed Jan 27, 2010 10:11 am
Posts: 3
Voila mon cas, j'ai 2 entites :

Code:
@Entity
Class Entete{
  @Id
  long enteteId;
  String data;
  ...
}

@Entity
@IdClass(DetailPK.class)
Class Detail{
  @Id
  @ManyToOne(...)
  Entete entete;
  @Id
  int ligne;

  String detail;
  ...
}

avec :

Code:
Class DetailPK implements Serializable{
  long entete;
  int ligne;
  ...
}



Lorsque je recherche des Detail, hibernate me renvoie une erreur comme quoi il est incapable de mapper un objet Entete dans Detail.entete. (en fait, un appel a la methode "set" sur le champ "entete" de "DetailPK" est effectué pour setter un objet "Entete", alors qu'il faudrait un set des primary key de Entete)

Est-ce que je m'y prend mal ou est-ce qu'il y a reelement un bug?

PS j'utilise hibernate 3.5.0 beta 3.


Top
 Profile  
 
 Post subject: Re: probleme avec @IdClass et @ManyToOne
PostPosted: Tue Mar 02, 2010 1:37 pm 
Newbie

Joined: Tue Mar 02, 2010 1:33 pm
Posts: 2
Salut,

J'ai exactement le même problème et quoi que je fasse je n'arrive pas à contourner. J'ai même essayer d'utiliser la façon de faire de JPA 1.0 mais ça ne fonctionne pas mieux.

Je n'arrive pas à trouver beaucoup d'infos là dessus, savoir si c'est un bug ou quoi.
Pourtant c'est pas vraiment exceptionnel un mapping de ce type, ça devrait ressortir ailleurs qu'ici..

Bon courage,
A+


Top
 Profile  
 
 Post subject: Re: probleme avec @IdClass et @ManyToOne
PostPosted: Wed Apr 18, 2012 4:56 am 
Newbie

Joined: Tue Jul 19, 2011 2:16 pm
Posts: 19
Bonjour,

J'ai la même problématique mais je n'ai pas le même mapping que vous. Ma classe "Key" possède 2 propriétés : un object SystemInfo et un entier planId.
Mais ça ne marche pas mieux. Avez-vous trouvé une solution ?
Code:
@Entity
@Table(name="systemSelection")
@IdClass(SystemSelectionKey.class)
public class SystemSelection implements Serializable {
     /**
      * The generated serial version id
      */
     private static final long serialVersionUID = -5714390642967962267L;

     @Id @Column(name="plan_id")
     private int planId = 0;

     @Id @ManyToOne @JoinColumn(name="system_id")
     private SystemInfo systemInfo = null;

     @Column(name="is_visible")
     private boolean isVisible = true;
     //...
}
Code:
@Entity
@Table(name="systemInfo")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class SystemInfo {
     /**
      *
      */
     private static final long serialVersionUID = -2606211766798365116L;

     @Id @Column @GeneratedValue(strategy=GenerationType.AUTO)
     private int id = 0;

     @Column
     private String name = "";

     @Column
     private String description = "";

     @Column(name="planmanager_id")
     private Integer planManagerId = 0;
     //...
}
Code:
@Embeddable
public class SystemSelectionKey implements Serializable {
     /**
      *
      */
     private static final long serialVersionUID = -7081405104395508365L;

     private SystemInfo systemInfo = null;
     private int planId = 0;

     public int getPlanId() {
          return planId;
     }
     public SystemInfo getSystem() {
          return systemInfo;
     }
     public void setPlanId(int planId) {
          this.planId = planId;
     }
     public void setSystem(SystemInfo system) {
          this.systemInfo = system;
     }
     /* (non-Javadoc)
      * @see java.lang.Object#hashCode()
      */
     @Override
     public int hashCode() {
          final int prime = 31;
          int result = 1;
          result = prime * result + planId;
          result = prime * result
                    + ((systemInfo == null) ? 0 : systemInfo.hashCode());
          return result;
     }
     /* (non-Javadoc)
      * @see java.lang.Object#equals(java.lang.Object)
      */
     @Override
     public boolean equals(Object obj) {
          if (this == obj)
               return true;
          if (obj == null)
               return false;
          if (getClass() != obj.getClass())
               return false;
          SystemSelectionKey other = (SystemSelectionKey) obj;
          if (planId != other.planId)
               return false;
          if (systemInfo == null) {
               if (other.systemInfo != null)
                    return false;
          } else if (!systemInfo.equals(other.systemInfo))
               return false;
          return true;
     }
}


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.