[ObjectNotFoundException] relation many to many
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:
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:
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:
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:
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.