최대 절전 모드에 문제가 있습니다. 내 도메인은 바우처, 쿠폰, ExtraUser, Term 및 TermUserRegistration입니다. 그들은 다음과 같습니다 :계단식 삭제가 작동하지 않습니다.
@Entity(name = "Voucher")
@Table(name = "extra_vouchers")
public class Voucher implements Cloneable, Serializable{
ID 및 기타 속성 ... 쿠폰은 쿠폰입니다. 모든 OfferDB (예 : 보트 등으로 일부 여행 ..)에는 하나 이상의 쿠폰이 있습니다. 모든 엑스트라 사용자는 하나 이상의 바우처도 소유 할 수 있습니다.
Term of offer (구체적인 날짜) - TermUserRegistration - 모든 등록은 하나의 바우처를 의미합니다. ...
다음 ExtraUser
@Entity
@Table(name = "extra_offers")
public class OfferDB implements Cloneable, Serializable {
@OneToMany (mappedBy="offer")
private List<Voucher> vouchers = new ArrayList<Voucher>();
이드 및 기타 속성 포함 :
@Entity(name = "extrauser")
@Table(name = "extra_users")
public class ExtraUser implements Cloneable, Serializable {
@OneToMany (fetch = FetchType.LAZY, mappedBy="owner")
private List<Voucher> vouchers = new ArrayList<Voucher>();
다음 기간 :
@Entity(name = "Term")
@Table(name = "extra_term")
public class Term implements Cloneable, Serializable{
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "extra_term_user", joinColumns = { @JoinColumn(name = "term_id") }, inverseJoinColumns = { @JoinColumn(name = "term_user_id") })
private List<TermUserRegistration> users = new ArrayList<TermUserRegistration>();
및 TermUserRegistration :
는 제공
@Entity(name = "TermUserRegistration")
@Table(name = "extra_term_users")
public class TermUserRegistration implements Cloneable, Serializable{
@OneToOne(cascade = CascadeType.ALL)
private Voucher extraVoucher;
지금 내가 ID로 TermUserRegistration을 삭제하고 또한 바우처 등의 연결 관계를 삭제할 수있는 몇 가지 방법이 있는지를 물어보고 싶은 ... 좀 폭포에 문제가 예외를 삭제할 수 있습니다.
내 방법은
@Override
public void unregisterUserFromTerm(Term termToExport, TermUserRegistration termUser) {
Voucher voucherToDisable = voucherDao.findById(termUser.getExtraVoucher().getId());
FreeVoucher freeVoucherToEdit = freeVoucherDao.findVoucherByCodeAndOfferId(termUser.getExtraVoucher().getCode(), termToExport.getOffer().getId());
Long l = Long.parseLong(String.valueOf(termToExport.getOffer().getId()));
Offer offer = offerDao.findById(l);
ExtraUser extraUser = userDao.findById(termUser.getExtraUser().getId());
termToExport.getUsers().remove(termUser);
extraTermDao.update(termToExport);
extraTermUserDao.delete(termUser);
offer.getVouchers().remove(voucherToDisable);
offerDao.update(offer);
extraUser.getVouchers().remove(voucherToDisable);
userDao.update(extraUser);
voucherDao.update(voucherToDisable);
voucherDao.delete(voucherToDisable);
freeVoucherToEdit.setFree(true);
freeVoucherDao.update(freeVoucherToEdit);
}
보이지만 내가
을 얻고있다 SEVERE : 경로 맥락에서 서블릿 [편집] 대한의 Servlet.service은() [/ 프로젝트] 예외를 던졌다 [실행 실패 :() : null 엔티티 이름 # null]]을 근본 원인으로 처리합니다. org.hibernate.ObjectDeletedException : 삭제 된 인스턴스가 update()에 전달되었습니다. [null 엔티티 이름 # null]
TermUserRegistration이 삭제 될 때 하나의 연결된 바우처를 삭제할 수있는 방법이 있는지 묻고 있습니까? 바우처는 다른 어떤 것에도 연결되지 않으며 TermUserRegistration은 다른 어떤 것에도 연결되지 않으므로 ExtraUser 객체, Term 객체 또는 Offer 객체에 어떻게 접근 할 지 확신하지 못합니다. – Pace
이러한 연쇄 삭제 예외는 무엇입니까? –
엑스트라 사용자가 TermUser (termUser 등록 기관)에 연결되어 있습니다. \t @OneToOne (cascade = \t CascadeType.ALL) \t 개인 ExtraUser 엑스트라; .. 전화 번호, 주소 등등에 관한 정보가 있습니다. 용어는 아마도이 문제에서 중복 될 수 있지만 ... 상품권에는 상품권이 포함되어 있습니다. 맞습니까? –