В Grails возможно ли изменить подтип персистентного объекта?
Скажем, у меня есть следующие классы:
class Fruit { ... }
class Apple extends Fruit { ... }
class Orange extends Fruit { ... }
Допустим, пользователь хочет создать новый Apple
, Они выбирают тип из выпадающего списка, и я использую сервис для перевода строки типа в конкретный тип:
def fruit = FruitService.createFruit(params.type)
fruit.properties = params
fruit.save()
Это успешно сохранит новый Apple
пример.
Теперь предположим, что пользователь понял, что он допустил ошибку и что он хотел создать Orange
вместо. В режиме редактирования я предоставляю пользователю возможность изменить тип на Orange
, но как мне обновить существующий Apple
экземпляр, так что теперь это Orange
? Я не могу просто удалить Orange
и создать новый Apple
экземпляр из-за других отношений. Это вообще возможно?