Спящий режим шва удалить проблему сиротства

Я использую сущность Employee, и внутри нее определяется список UserMaster.

public class EmployeeMaster{
    private String employee_id;
    private String first_name;
    private String last_name;
    private List<UserMaster> userMaster = new ArrayList<UserMaster>();

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "employeeMaster")
    @Cascade(value = {CascadeType.SAVE_UPDATE,CascadeType.DELETE_ORPHAN})   
    public  List<UserMaster> getUserMaster() {
        return userMaster;
    }
    public void setUserMaster(List<UserMaster> userMaster) {
        this.userMaster = userMaster;
    }
}

в моем методе я звоню

xsession.saveOrUpdate(employeeMaster);

Здесь я явно очищаю предыдущую дочернюю коллекцию и добавляю новые дочерние объекты

Но удаление сироты здесь не работает. Выполняется только запрос на вставку. Пожалуйста, помогите.

На коллекцию с cascade="all-delete-orphan" больше не ссылается объект-владелец.

сообщение отображается в консоли


person jennifer    schedule 08.02.2011    source источник


Ответы (1)


Похоже, вы заменили коллекцию, содержащуюся в загруженном объекте, на setUserMaster().

Когда коллекция настроена с помощью DELETE_ORPHAN, вы не можете заменить коллекцию таким образом, вам нужно изменить существующую коллекцию, используя ее собственные методы.

person axtavt    schedule 08.02.2011
comment
не могли бы вы объяснить это немного больше - person jennifer; 08.02.2011
comment
@jennifer: Что именно непонятно? Вы звоните setUserMaster() куда-нибудь? Вы не должны этого делать. - person axtavt; 08.02.2011