У меня та же проблема, и пока единственный способ, который я нашел, - это запросить родителя и создать дочерний элемент с родителем. Затем удалите родительский и воссоздайте обе записи.

т, я новичок в JPA, и мне трудно понять, как он обрабатывает наследование.

У меня есть конкретная проблема, которую мне нужно решить без изменения схемы БД, но если вы не можете найти решение, я буду признателен за предложения по решению с другой схемой БД (приветствуются решения Hibernate / TopLink).

Если мне было неясно или вам нужна дополнительная информация, пожалуйста, сообщите мне об этом. Заранее спасибо!

У меня есть эта база данных:

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)

Пока мои сущности выглядят так:

@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;
}

В настоящее время я могу сохранять объекты Fruit без проблем. Объекты Apple сохраняются, только если их объект Fruit еще не сохранен.

Если я пытаюсь сохранить объект Apple с уже сохраненным объектом Fruit:

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

Я получу ошибку, поскольку JPA пытается создать новую строку в таблице Fruit с Id = "1", которая уже существует.

..

Ответы на вопрос(4)

Ваш ответ на вопрос