In Grails, is it possible to change the subtype of a persistent entity?

162 Views Asked by At

Say I have the following classes:

class Fruit { ... }
class Apple extends Fruit { ... }
class Orange extends Fruit { ... }

Let's say a user wants to create a new Apple. They pick a type from a dropdown, and I use a service to translate the type string into a concrete type:

def fruit = FruitService.createFruit(params.type)
fruit.properties = params
fruit.save()

This will successfully save a new Apple instance.

Now let's say the user realized that they made a mistake and that they wanted to create an Orange instead. In the edit view, I provide the ability for the user to change the type to an Orange, but how do I update the existing Apple instance so that it's now an Orange? I cannot simply delete the Orange and create a new Apple instance because of other relationships. Is this even possible?

0

There are 0 best solutions below