Bonjour,

Je tourne en rond sur un problème JPA qui me paraît pourtant simple.
Il s'agit simplement de "fetcher" une collection d'une entité.

Mon modèle est le suivant : j'ai des "Item" qui sont reliés à des "User" via une table d'association "ItemUser".

[ Item ] 1 --- n [ ItemUser ] n --- 1 [ User ]

Je veux pouvoir requêter des "Item" en récupérant la liste associée de "ItemUser". Problème, j'obtiens toujours une liste vide (les données en base existent).

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
@Entity
public class Item implements Serializable {
 
    @Id
    @GeneratedValue( ... )
    @SequenceGenerator( ... )
    @Column( name = "ID" )
    private Long itemId;
 
    @Lob
    private String content;
 
    @OneToMany( mappedBy = "item" )
    private List<ItemUser> itemUsers;
 
    @NotNull
    @ManyToOne
    private SomeOtherEntity etc;
 
    ...
}
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
@Entity
@IdClass( value = ItemUserPK.class )
public class ItemUser implements Serializable {
 
    @Id
    @ManyToOne
    private Item item;
 
    @Id
    @ManyToOne
    private User user;
 
    private Boolean flag;
 
    ...
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public class CommentUserPK implements Serializable {
 
    private Long item;
 
    private Long user;
}
Sur des tests aussi basiques que em.find( Item.class, 1L );, la collection itemUsers est toujours vide...

Pour information, l'application tourne sous Glassfish 3, avec EclipseLink.
J'ai mis ce qui correspond en gros au résultat souhaité (qui me parait OK, je me suis inspiré de la spec JPA elle-même, §4.1.2) mais même en simplifiant encore plus (ItemUser avec juste id, many-to-one et flag)... c'est pas mieux...

Je suis preneur de toute suggestion !
Merci.