2016-11-21 6 views
0
aktualisieren

Ich habe es mit CRUD auf einer Klasse hierarhy: Employee->{Manager, Waiter, Chef} mit Spring MVC. Ich verwende Single-Table-Vererbungsstrategie mit einem Feld DTYPE als Diskriminator. Wo ich stecke ist eine Situation, wenn ich Kellner aktualisieren muss -> Manager (nicht ein Fall ist ein Kellner wurde gefördert, sondern nur um einen Benutzer Eingabefehler zu beheben !!!) oder eine andere Kombination von Entitäten.Hibernate: Eintrag mit geändertem Typ

Hibernate in sich weigert, den Typ in DTYPE- Feld aufgezeichnet zu ändern, auch wenn ich explizit tun:

managerDAO.update(manager); 

wo manager ein Objekt von Manager Klasse mit bereits bestehenden Id (belongning zu einem Kellner-Typ (DTYPE- = "Kellner")) im DB.

Jetzt ist die Frage: Wie korrigiere ich den Eingabefehler meines Benutzers, der scheinbar ziemlich einfache und vorherrschende Situation ist? Ich muss nur ehemaligen Kellner-Eintrag zu einem Manager-Eintrag mit der gleichen ID machen.

Ich frage mich, ob Hibernate einige Tricks hat, um mit einer Situation wie dieser umzugehen? Weil ich kein Rad neu erfinden ODER ein Workaround-Gefühl finden möchte, sollte dies vom Hibernate-Team vorhergesehen werden.

habe ich schon als

  1. SQL-Update auf DTYPE- Feld und
  2. löschen und setzen Sie einen neuen Eintrag des richtigen Typs ... aber das alles sieht aus wie eine falsche Verwendung von Hibernate.

Jede Hilfe wäre willkommen!

Antwort

0

Versuchen Sie, das "Kellner" -Objekt abzufragen, das an ein "Personen" -Objekt übergeben wurde (vorausgesetzt, die Person ist der Elternteil in Ihrem Vererbungsbaum), dann werfen Sie einen Manager, legen relevante Felder fest und behalten das Managerobjekt bei.

Verwandte Themen