2010-09-16 6 views
1

J'ai une entité Case qui a un ID CaseId (malheureusement une chaîne due à la compatibilité avec un système hérité). Cet identifiant est une clé étrangère dans la table Document, et chaque cas peut contenir plusieurs documents (onetomany). J'ai mis la suivante dans mon entité cas:Hibernate: extraction d'un ensemble d'objets dans un mappage d'entité

@Id 
@Column(name = "CaseId", length = 20, nullable = false) 
private String caseId; 

@OneToMany(fetch=FetchType.EAGER) 
@JoinColumns ({ 
    @JoinColumn(name="caseId", referencedColumnName="CaseId") 
}) 
private Set<Document> documents; 

Le tableau de document contient « CASEID varchar (20) non nulle ». À l'heure actuelle, dans la base de données, tous les cas ont six documents. Pourtant, quand je fais myCase.documents(). Taille, je reçois seulement un seul document. Que dois-je faire pour obtenir tous les documents?

Vive

Nik

+0

Mise à jour: Ce qui est drôle est que le premier temps j'accède à l'affaire, il retourne seulement un document. La prochaine fois, il peut en retourner deux. Troisième fois aussi peut-être deux, et parfois un. Aucune source n'a changé, aucun changement dans la base de données, rien que je sais comment il peut l'expliquer. Bizarre! – niklassaers

Répondre

2

La cartographie semble correcte. Mais il serait intéressant de voir:

  • l'entité Document (et son equals/hashCode)
  • SQL effectué (voir this previous answer pour activer la journalisation SQL)
+1

Cher monsieur! Tu es mon héros personnel aujourd'hui !!! :-) Merci pour le soupçon de hashCode, j'y avais pensé avant, mais je m'en sors. Régénérer dans STS a fait que ça a marché comme il se doit! :-) – niklassaers

+0

Grt. !! 9 plus à aller .. –

+0

@niklassaers Heureux que ce soit résolu. @ org.life.java Hmm ... quoi? :) –