Bonjour,

Voici mon problème : j'ai une relation many to many entre une entité "Item" et une entité "SousItem", mappée de la sorte :

Item.java :
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
 
@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "Item_has_SousItem", catalog = "suIVVi", 
			joinColumns = {
				@JoinColumn(name = "Item_Item_id", nullable = false, updatable = false),
				@JoinColumn(name = "Item_VersionProduit_VersionProduit_id", nullable = false, updatable = false),
				@JoinColumn(name = "Item_VersionProduit_Produit_idProduit", nullable = false, updatable = false),
				@JoinColumn(name = "Item_VersionProduit_Produit_Questionnaire_Questionnaire_id", nullable = false, updatable = false) 
			}, 
			inverseJoinColumns = { 
				@JoinColumn(name = "SousItem_SousItem_id", nullable = false, updatable = false),
				@JoinColumn(name = "SousItem_Etats_Etats_id", nullable = false, updatable = false) 
			})
	public Set<SousItem> getSousItems() {
		return this.sousItems;
	}
SousItem.java :
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
 
@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "Item_has_SousItem", catalog = "suIVVi", 
			joinColumns = {
				@JoinColumn(name = "SousItem_SousItem_id", nullable = false, updatable = false),
				@JoinColumn(name = "SousItem_Etats_Etats_id", nullable = false, updatable = false) 
			}, 
			inverseJoinColumns = { 
				@JoinColumn(name = "Item_Item_id", nullable = false, updatable = false),
				@JoinColumn(name = "Item_VersionProduit_VersionProduit_id", nullable = false, updatable = false),
				@JoinColumn(name = "Item_VersionProduit_Produit_idProduit", nullable = false, updatable = false),
				@JoinColumn(name = "Item_VersionProduit_Produit_Questionnaire_Questionnaire_id", nullable = false, updatable = false) 
			})
	public Set<Item> getItems() {
		return this.items;
	}
J'ajoute que le mapping est automatiquement généré par HibernateTools.

Lorsque je souhaite accéder aux SousItem d'un Item donné par la méthode suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public Set<SousItem> getWithItemId(ItemId id) {
		Item item = getHibernateTemplate().get(Item.class, id);
		return item.getSousItems();
	}
J'obtiens l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [fr.csie.domain.SousItem#fr.csie.domain.SousItemId@5b11]
La FAQ sur le site d'Hibernate ici me précise que c'est parce que j'essaie d'accéder au contenu d'un objet proxy.

Du coup je ne sais plus vraiment quoi faire à ce niveau.
Est-ce que quelqu'un serait susceptible de m'aider à ce sujet, de m'expliquer pourquoi j'ai cette erreur et comment la corriger ?

Merci d'avance.