Удаление сирот не работает в функции session.update - PullRequest
0 голосов
/ 19 июня 2020

У меня есть отношения @OneToMany. У родительской сущности также есть временные поля. Я хочу сохранить эти временные поля после сохранения или обновления. Также я хочу, чтобы спящий режим был удален для дочерних объектов. Если я использую entityManager.merge, hibernate orphan удаляет дочерние объекты, но также не сохраняет временные поля. Если я использую session.saveOrUpdate, он сохраняет временные поля, но не удаляет сиротские.

Примеры объектов;

@Table(name = "parent_entity")
@Entity(name = "ParentEntity")
public class ParentEntity extends PersistentEntity {
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "inner_entity")
    private InnerEntity innerEntity = new InnerEntity();
    
    @Transient
    private SomePojo transientField;


    public InnerEntity getInnerEntity() {
        return innerEntity;
    }

    public void setInnerEntity(InnerEntity innerEntity) {
        this.innerEntity = innerEntity;
    }
    
}

@Table(name = "parent_entity")
@Entity(name = "ParentEntity")
public class ParentEntity extends PersistentEntity {
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "inner_entity")
    private InnerEntity innerEntity = new InnerEntity();

    public InnerEntity getInnerEntity() {
        return innerEntity;
    }

    public void setInnerEntity(InnerEntity innerEntity) {
        this.innerEntity = innerEntity;
    }
    
}

@Table(name = "child_entity")
@Entity(name = "ChildEntity")
public class ChildEntity extends PersistentEntity {
    
    @ManyToOne
    @JoinColumn(name = "inner_entity")
    private InnerEntity innerEntity;
    
    @Column(name = "child_value")
    private String childValue;

    public InnerEntity getInnerEntity() {
        return innerEntity;
    }

    public void setInnerEntity(InnerEntity innerEntity) {
        this.innerEntity = innerEntity;
    }

    public String getChildValue() {
        return childValue;
    }

    public void setChildValue(String childValue) {
        this.childValue = childValue;
    }

    
    
}

Как я уже сказал, я хочу сохранить и обновить родительские и Я хочу, чтобы в спящем режиме сохранялись временные поля и выполнялось удаление сирот.

Я пробовал entityManager.merge и session.saveOrUpdate, но ни один из них не делает то, что я хочу.

Спасибо.

...