2017-05-13 1 views
0

최대 절전 모드에 문제가 있습니다. : 나는 새 표를 저장하기 위해 노력하고있어 때 ... 나는 다음과 같은 오류가최대 절전 모드 캐스케이드 저장

Ticket ticket = new Ticket(); 
    User user = userService.findBySSO(userName); 
    ticket.setUser(user); 


    ticket.setTripsSites(new HashSet<>(tripsSites)); 

    persist(ticket); 

을 ... "티켓"

@ManyToMany(fetch = FetchType.EAGER) 
@JoinTable(name = "ticketComposition", 
     joinColumns = { @JoinColumn(name = "ticketId")}, 
     inverseJoinColumns = { @JoinColumn(name = "tripsSiteId")}) 
private Set<TripsSite> tripsSites = new HashSet<TripsSite>(); 

을하고 - 내가 클래스가 my data model

보기 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : 자식 행을 추가하거나 업데이트 할 수 없습니다. 외래 키 제약 조건이 실패합니다 (sbb. ticketcomposition, 제약 조건 ticket 외래 키 (ticketId) 피드백 보내기 참조 ticket (id)

이 문제를 어떻게 해결할 수 있습니까? 당신을 가정

답변

0

TicketSite 개체에 정의 같은 것을 가지고

@ManyToMany(mappedBy="tripSites") 
private Set<Trip> trips = new HashSet<Trip>(); 

지속하는 동안, 당신은 @ManyToMany 매핑의 양쪽에 종속성을 설정해야합니다 : 나는 가정하고

Ticket ticket = new Ticket(); 
User user = userService.findBySSO(userName); 
ticket.setUser(user); 

ticket.setTripsSites(new HashSet<>(tripsSites)); 

for(TicketSite ticketSite: ticketSites){ 
    ticketSite.getTickets().add(ticket); 
} 

persist(ticket); 

ticketSites 집합이 데이터베이스에서 이전에 검색되었으며이 트랜잭션 방식이 시작되기 전에 유지되었습니다.

+0

예, tripsSites를받습니다. 목록 tripsSites = getEntityManager() .createNativeQuery .setParameter ("ST2", ST2) (nativeQuery, TripsSite.class) .setParameter (ST1 "ST1") .setParameter ("dirId", dirId) .setParameter ("carId", carId) .setParameter ("siteId", siteId) .getResultList(); – 1sik

관련 문제