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 :
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 = "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; }
J'ajoute que le mapping est automatiquement généré par HibernateTools.
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; }
Lorsque je souhaite accéder aux SousItem d'un Item donné par la méthode suivante :
J'obtiens l'erreur 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(); }
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.
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]
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.
Partager