私はHibernateに問題があります。 私はクラス持っmy data modelHibernate cascade save
を参照してください - 私は次のエラーを取得する
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>();
と私は新しいチケットを保存しようとしています: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:子行を追加または更新できません:外部キー制約が失敗しました(sbb
。ticketcomposition
、CONSTRAINT ticket
FOREIGN KEY(ticketId
)参照番号ticket
(id
))
この問題を解決するにはどうすればよいですか?持続、あなたが@ManyToMany
マッピングの両側の依存関係を設定する必要がありますが
@ManyToMany(mappedBy="tripSites")
private Set<Trip> trips = new HashSet<Trip>();
:
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);
私が想定していますあなたがTicketSite
エンティティで定義されている。このような何かを持っていると仮定すると
はい、私はtripsSitesを取得します。リスト tripsSites = getEntityManager() .createNativeQuery .setParameter( "ST2"、ST2)(nativeQuery、TripsSite.class) .setParameter(ST1 "ST1") .setParameter( "dirId"、dirId) .setParameter ( "carId"、carId) .setParameter( "siteId"、siteId) .getResultList(); –
1sik