EclipseLink не удаляет частный элемент «один ко многим» - PullRequest
1 голос
/ 08 ноября 2011

Я не могу заставить Eclipselink удалить частную сущность, которая отображается как отношение один-ко-многим. Когда я удаляю частную сущность из коллекции «один ко многим» и устанавливаю ссылку на ее родителя равной NULL, а затем сохраняю родительскую сущность, частная сущность не удаляется из базы данных. Однако он удаляется из объекта, и в течение оставшейся части сеанса создается впечатление, что частный объект был фактически удален.

Вот одно отображение

@OneToMany(mappedBy="parent", cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch=FetchType.EAGER)
@PrivateOwned // should prevent orhpans, but doesn't.
List<PrivatelyOwnedEntity> privatelyOwnedEntities;

Я попытался добавить cascade all, а также добавил @CascadeOnDelete и каждую их комбинацию, которая, как можно было бы подумать, не окажет влияния, и это не так.

Otherside:

@ManyToOne
private Parent parent;

Я попытался добавить JoinColumn (nullable = false), а также удалить аннотацию @ManyToOne и каждую комбинацию наличия / удаления этих аннотаций. Ни одно из изменений не оказало влияния.

Код удаления:

public boolean removePrivatelyOwnedEntity(int i) {
    PrivatelyOwnedEntity privatelyOwnedEntityToBeRemoved = this.privatelyOwnedEntities.get(i);
    //privatelyOwnedEntityToBeRemoved.setParent(null); 
    return this.privatelyOwnedEntities.remove(privatelyOwnedEntityToBeRemoved );
}

Код, который обновляет:

projectManager.saveProject(project);
//so this privatelyOwnedEntity is deep within this object.
// Its project.site.siteMap.parents.privatelyOwnedEntities.
// SiteMap is embedded in Site.
// On save it calls a dao, and the dao's abstract class handles the update
// as shown below using Springs JpaTemplate

Сохранить код:

public T save(T object) {
    return getJpaTemplate().merge(object);
}

1 Ответ

1 голос
/ 15 ноября 2011

Является ли родительская часть идентификатора объекта?

Старайтесь не устанавливать родительский элемент в null, вы не должны делать это для частных объектов, просто удалите их из коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...