Cambiar subtipo en herencia de hibernación

Tengo tres clases que quiero modelar usando Hibernate en Play! Framework:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class SupplyArea extends Model {
    public int scadaId;
    public String symbol;
}

@Entity
public class HighVoltageSubstation extends SupplyArea {
    public int hvAttribute;
}

@Entity
public class MediumVoltageSubstation extends SupplyArea {
    public int mvAttribute;
}

¡Gracias por jugar! Ya he definido la identificación del identificador de clave principal.

Funciona bien la mayor parte del tiempo: tengo tres tablas de base de datos, los identificadores HVSubstation y MVSubstation se crean como claves foráneas para SupplyArea y así sucesivamente.

Pero no 'poseo' los objetos, necesito importarlos de otra fuente. Entonces, si algo cambia en otra aplicación, necesito actualizar la mía. El problema es cuando el objeto cambia su tipo: ya no es una HVSubstation, ahora es una MVSubstation. Todos los demás parámetros (es decir, scadaId, símbolo) siguen siendo los mismos. Es el mismo objeto, pero tiene otro tipo.

¿Hay alguna forma de cambiar entre subtipos sin perder mi identificador de clave principal? Intenté algo como esto:

SupplyArea oldArea = SupplyArea.getByScadaId(scadaId); // returns HVSubstation
SupplyArea newArea = new MVSubstation();
newArea.id = oldArea.id;
newArea.scadaId = scadaId;
newArea.symbol = symbol;
oldArea.delete();
newArea.save();

Obviamente, no funciona.

Respuestas a la pregunta(2)

Su respuesta a la pregunta