Аннотация для all-delete-orphan в hibernate 4.1.4

Я новичок в этой спящей аннотации. Пожалуйста, помогите мне приведенный ниже код для аннотации.

// XML-файл

<map name="Text" table="JAV_TEXT" inverse="true" cascade="all-delete-orphan">
            <key column="FK_GUID"/>
            <map-key column="TEXT_GUID" type="string"/>
            <one-to-many class="com.TextPO"/>
        </map>

Я сделал аннотацию для приведенного выше кода, как

@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class)
    @Cascade({CascadeType.DELETE_ORPHAN})
    @JoinColumn(name="FK_GUID")
    @MapKey(name="TEXT_GUID")
    private Map<String, PersistentObject> text = new HashMap<String, PersistentObject>();

Так как удаление-сирота является устаревшим методом. Каково точное решение для этого все-удалить-сирота? Я использую hibernate 4.1.4 jar.

1 ответ

Решение

Да в Hibernate 4.1.4 версия delete-orphan устарела, теперь в Hibernate а также JPA 2.0 ты можешь использовать orphanRemoval вместо:

@OneToMany(orphanRemoval = true)

Ваше отображение должно быть таким:

@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true)
@JoinColumn(name="FK_GUID")
@MapKey(name="TEXT_GUID")
private Map<String, PersistentObject> text = new HashMap<String, PersistentObject>();

А также удалить @Cascade аннотации вы можете использовать его в качестве атрибута @OneToMany аннотация как это:

@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true)

Взгляните на этот пример для дальнейшего чтения.

РЕДАКТИРОВАТЬ:

Чтобы дать inverse="true" свойство в вашем отображении вам просто нужно указать mappedBy атрибут в вашем @OneToMany аннотация для ссылки на принадлежащую часть отношения, например:

@OneToMany(fetch = FetchType.LAZY, targetEntity=com.TextPO.class, orphanRemoval = true, mappedBy= "theOneSide")

Здесь theOneSide используется в качестве примера, вам просто нужно указать имя поля, используемое в другом классе стороны отображения, например:

@ManyToOne
private MyClass theOneSide;

Посмотрите на инверсию =true в аннотациях JPA для получения дополнительной информации.

Другие вопросы по тегам