Hibernate unterstützt keine "delete-orphan" -Kaskadierung von Eins-zu-Eins- oder Viele-zu-Eins-Beziehungen. Ich habe das erst kürzlich entdeckt und es bereitet mir ernsthafte Kopfschmerzen. Ich habe ein paar Klassen in meinem Modell, die so entworfen wurden, dass das Kind außerhalb des Elternteils keine wirkliche Weltbedeutung hat. Ich habe nur ein DAO für das Elternteil und nicht ein separates DAO für die Kindklasse.Problemumgehungen für Hibernate's Mangel an Delete-Orphan-Unterstützung für Eins-zu-Eins und Viele-zu-Eins-Beziehungen?
Dies funktioniert:
parent.getChild().setProperty("something");
parentDao.save(parent);
Das hat nichts tun:
parent.setChild(null);
parentDao.save(parent);
Dies ist sehr bedauerlich, denn jetzt muss ich meine DAO Schicht und einige der Operationen meines Dienstes überdenken Schicht.
Hat jemand diese Einschränkung in eleganter Weise bearbeitet? Ich möchte mich wirklich nur mit persistierenden Elternobjekten befassen. In diesem speziellen Fall gibt es keinen Grund, sich mit der Kinderpersistenz zu befassen, außer um Hibernate glücklich zu machen, und nur im Falle des Löschens von Kindern.
Es scheint es vor etwa einem Jahr beschlossen wurde - http://opensource.atlassian.com/projects/hibernate/browse/HHH-4726 –
@Savannah: Es sieht so aus, als ob 'delete-orphan' für' 'unterstützt wird, falls die Beziehung nicht' constrained' ist (siehe http://docs.jboss.org/hibernate /core/3.6/reference/en-US/html/mapping.html#onetoone4). Ich kann das mir selbst kaum erklären, da Eins-zu-eins immer eine referentielle Schlüsseleinschränkung hat. –