JPA Herencia

Hola, soy nuevo en JPA y tengo problemas para entender cómo maneja la herencia.

Tengo un problema específico que necesito resolver sin cambiar el esquema de base de datos, pero si no puede encontrar una solución, agradecería sugerencias de solución con un esquema de base de datos diferente (se aceptan soluciones Hibernate / TopLink).

Si no estaba claro o necesita más información, dígamelo. ¡Gracias por adelantado

Tengo esta base de datos:

TABLE Fruit
Id Varchar (10) Primary Key
size Varchar (10)
fruit_type Varchar(10)

TABLE Apple
Id Varchar (10) Primary Key Foreign Key references Fruit.Id
Apple_Property Varchar(10)

Hasta ahora mis entidades se ven así:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="fruit_type", discriminatorType=DiscriminatorType.Char)
@DiscriminatorValue(value="fruit")

public class Fruit implements Serializable {

    @Id
    protected String Id;

    protected String size;
}

@Entity
@DiscriminatorValue(value="apple")
//@PrimaryKeyJoinColumn(name="Id" , referencedColumnName="Id")

public class Apple extends Fruit implements Serializable {

    private String Apple_Property;
}

Actualmente puedo persistir objetos Fruit sin ningún problema ... Los objetos Apple persisten solo cuando su objeto Fruit aún no se ha conservado.

Si trato de persistir un objeto de manzana con un objeto Fruit ya persistente:

Fruit fruit1 = new Fruit("1", "Small");
Apple apple1 = new Apple(fruit1, "red");
provider.create(fruit1);
provider.create(apple1);

Recibiré un error ya que JPA intenta crear una nueva fila en la tabla Fruit con Id = "1" que ya existe.

..

Respuestas a la pregunta(4)

Su respuesta a la pregunta