아래 코드를 실행하려고하는데 "제거 된 엔터티를 병합 할 수 없습니다."라는 오류 메시지가 계속 나타납니다.엔터티 빈에서 관련 엔터티 빈 목록을 지울 수 없습니다.
내 DB 테이블은 다음과 같이 :
banner
-id
banner_period
-id
-banner_id
-date
내 자바 코드 : 나는 모든이의 논리를 이해할 수없는 것
Banner b = getEntityManager().find(banner.getId());
List<BannerPeriod> bps = b.getBannerPeriodList();
for (BannerPeriod bp : bps) {
getEntityManager().remove(bp);
}
// <-- removed code that adds periods here
b.setBannerPeriodList(bps);
getEntityManager().merge(b);
. 아무도 그게 뭔지 설명 할 수 있을까요, 내가 여기에없는거야? 이미 답변을 검색하려고 시도했지만 관련성 높은 결과를 제공하는 키워드를 정의하기가 어렵습니다.
UPDATE :
배너 엔티티 :
@OneToMany(cascade = CascadeType.ALL, mappedBy = "bannerId")
private List<BannerPeriod> bannerPeriodList;
BannerPeriod 엔티티 :
@JoinColumn(name = "banner_id", referencedColumnName = "id")
@ManyToOne(optional = false)
private Banner bannerId;
도움이 될 배너/BannerPeriod 관계에 대한 매핑 정의를 살펴보면보십시오. 게시 할 수 있습니까? –
그래. 관계는 데이터베이스에서 계단식으로 정의됩니다. 위의 업데이트를 참조하십시오. –