Bonjour,
J'implémente une application qui vient se greffer sur une DB existante.
J'ai une entité (mappée sur "table_A")qui doit contenir une map de champs venant d'une autre table ("table_B") (qui elle n'est pas mappée @entity).
Pour faire le lien entre ces 2 tables, j'ai dans table_A:
- un champ "code" (qui n'est pas l'id de l'objet mais qui est tout de même unique)
- un champ "sanction"
de l'autre côté (table_B):
- le même code (qui n'est pas l'id dans la table)
- la même sanction
- le code langue
- le libellé
Un entregistrement dans table_B est unique sur:
code, sanction, langue
Ce que je souhaite avoir, c'est:
Dans mon entité "A" (mappée sur table_A),
une map<langue, libellé> dont les valeurs proviennent de table_B et qui correspondent au code et à la sanction de mon objet A.
Voici mon mapping dans man classe :
Code :
Malheureusement, quand je tente de récupérer un object A de la DB, j'ai ceci:
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
21
22
23
24
25
26
27
28
29
30 @Entity @Table(name = "table_A") public class A implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "ID") private Long id; @Column(name = "codeA") private String codeA; @Column(name = "sanctionA") private String sanctionA; @CollectionOfElements(fetch = FetchType.EAGER) @JoinTable(name = "table_B", joinColumns = { @JoinColumn(name = "code", referencedColumnName="codeA"), @JoinColumn(name = "sanction", referencedColumnName="sanctionA") }) @MapKey(columns = { @Column(name = "langue") }) @Column(name = "libelle") private Map<String, String> mapTableBLabels; ... }
Une idée ?collection is not associated with any session; nested exception is org.hibernate.HibernateException: collection is not associated with any session
Partager