2010-05-21 10 views
-1

J'ai créé deux tables en tant que personne et adresse en utilisant JPA. Je veux donner une relation un-à-plusieurs entre ces tables. Si je donne le suivantRelation JPA

@OneToMany(mappedBy="address",targetEntity=person.class,fetch=FetchType.EAGER) 

dans la table d'adresse signifie que cela ne fonctionne pas correctement. Quelqu'un peut-il m'aider?

Merci d'avance.

+0

Un peu plus d'information est nécessaire. Afficher un extrait de votre classe Person dans lequel vous avez déclaré l'adresse et un extrait de la classe d'adresse dans laquelle vous avez déclaré la liste des personnes. –

+0

Qu'est-ce qui ne va pas correctement? Aussi s'il vous plaît montrer vos entités. –

+0

Il est presque impossible de dire quoi que ce soit avec une si petite description. – brandizzi

Répondre

0

Sans rien savoir de votre architecture, je devinerai ce dont vous avez besoin. JPA est assez intelligent pour savoir comment joindre vos tables, donc si vous avez des ID dans les deux tables, vous n'avez pas besoin de "mappedBy" et "targetEntity".

Vous avez simplement besoin d'annoter votre classe comme suit: (en supposant que votre relation est une adresse a beaucoup de gens).

Au sein de la classe Adresse:

@OneToMany 
@JoinColumn(name="address_id") 
public List<Person> getPeople() 
{ 
    return people; 
} 

Cela placera ADDRESS_ID comme un champ dans votre table de personne représentant leur adresse associée. Puisque vous déclarez votre liste de type, la personne JPA saura faire la correspondance avec la table de personnes (à condition que la classe Person soit correctement annotée avec @Entity).

+1

Si l'association est bidirectionnelle, vous avez certainement besoin de 'mappedBy' (ou cela aboutirait à deux associations unidirectionnelles). –

+0

@Pascal Thiver, juste fait l'hypothèse qu'il était unidirectionnel basé sur zéro information fournie par l'OP. Si bidirectionnel, vous devez également avoir une adresse annotée dans la classe de personne et toutes les autres exigences ... – kgrad

0

ceci est un exemple

@ElementCollection 
@CollectionTable(name = "NUMBER") 
private List<String> number; 
+0

Pourriez-vous s'il vous plaît ajouter plus d'explications? –