ich diesen Code haben:JPA OneToMany bleibt nur ein
@Table(name = "Prize")
public class Prize {
@Id
@Column(
nullable = false,
unique = true
)
private int id;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
private Set<TicketNumber> numbers;
}
@Table(name = "TicketNumber")
public class TicketNumber {
@Id
@Column(
nullable = false,
unique = true
)
private int id;
}
Dies erzeugt eine Tabelle Prize_TicketNumber mit zwei Feldern (Prize_id und TicketNumber_id) genannt beitreten, aber wenn ich einen Preis mit vielen Zahlen zu speichern, nur ein Datensatz eingefügt in der Tabelle. Weiß jemand warum?
EDIT: Dies ist der Code der Einfügung. Die Repositories sind einfache JpaRepositories.
Prize prize = prizeRepository.findById(prizeId);
if(prize == null) return;
List<TicketNumber> winners = ticketNumberRepository.findByPrizeId(fixedPrize.getId());
if (winners != null && !winners.isEmpty()) {
for (TicketNumber winner : winners) {
winner.setWinner(false);
TicketNumber t = ticketNumberRepository.save(winner);
}
raffleNumberRepository.flush();
}
prize.getTicketNumbers().clear();
for (String ticketId : ids) {
TicketNumber ticketNumber = ticketNumberRepository.findOne(ticketId);
if (ticketNumber != null) {
ticketNumber.setWinner(true);
prize.getTicketNumbers().add(raffleNumber);
}
}
prize.setNumbersAssigned(true);
prizeRepository.saveAndFlush(prize);
Geben Sie Ihren Code ein. Der Code, der die Einfügung von Ma-, Y-Zahlen und den gesamten Code der beiden Entitäten ausführt. –
Haben Sie versucht, List statt Set zu verwenden? Vielleicht hast du ein Problem mit Equals – Bartun
Ich wette, es ist gleich und hashCode zu –