我对Hibernate有点问题。请参阅my data model
我有课--“入场券”...
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "ticketComposition",
joinColumns = { @JoinColumn(name = "ticketId")},
inverseJoinColumns = { @JoinColumn(name = "tripsSiteId")})
private Set<TripsSite> tripsSites = new HashSet<TripsSite>();当我想存新票的时候...
Ticket ticket = new Ticket();
User user = userService.findBySSO(userName);
ticket.setUser(user);
ticket.setTripsSites(new HashSet<>(tripsSites));
persist(ticket);我得到以下错误: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法添加或更新子行:外键约束失败(sbb.ticketcomposition,constraint ticket外键(ticketId)引用ticket (id))
如何解决此问题?
发布于 2017-05-13 13:11:22
假设您在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集以前已经从数据库中检索过,并且在这个事务性方法启动之前已经持久化了。
https://stackoverflow.com/questions/43949205
复制相似问题