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 :

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;
...
}
Malheureusement, quand je tente de récupérer un object A de la DB, j'ai ceci:


collection is not associated with any session; nested exception is org.hibernate.HibernateException: collection is not associated with any session
Une idée ?