verbrachte auf diese über einen Tag und kann ein Problem nicht erkennen. Ich brauche keine perfekte Lösung, gib mir nur Anweisungen, wo das Problem liegt. Wo kann ich Informationen darüber finden.Datenbank nicht zeigen Beziehungen für zwei bestimmte Einheiten - Spring-Boot-App
Ich habe einige Einheiten, von denen einige Sie können unten finden (nicht alle Felder, nur für diese Aufgabe erforderlich):
@Entity
@Data
@EqualsAndHashCode(exclude = {"teams","organizers"})
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(nullable = false)
private String eventName;
@ManyToMany
@JoinTable(name = "event_organizer",
joinColumns = @JoinColumn(name = "event_id"),
inverseJoinColumns = @JoinColumn(name = "organizer_id"))
private Set<Organizer> organizers= new HashSet<>();
@ManyToMany
@JoinTable(name = "event_team",
joinColumns = @JoinColumn(name = "event_id"),
inverseJoinColumns = @JoinColumn(name = "team_id"))
private Set<Team> teams = new HashSet<>();
}
@Entity
@Data
@EqualsAndHashCode(exclude = {"events"})
public class Organizer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(nullable = false)
private String organizerName;
private String organizerLastName;
private String organizerEmailAddress;
private String organizerTelephoneNumber;
@ManyToMany(mappedBy = "organizers")
private Set<Event> events= new HashSet<>();
}
@Entity
@Data
@EqualsAndHashCode(exclude = {"events", "players"})
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(nullable = false)
private String teamName;
@ManyToMany
@JoinTable(name = "team_player",
joinColumns = @JoinColumn(name = "team_id"),
inverseJoinColumns = @JoinColumn(name = "player_id"))
private Set<Player> players = new HashSet<>();
@ManyToMany(mappedBy = "teams")
private Set<Event> events= new HashSet<>();
}
@Entity
@Data
@EqualsAndHashCode(exclude = {"teams"})
public class Player {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(nullable = false)
private String playerName;
private String playerLastName;
private int playerAge;
private String playerNickname;
private String playerEmailAddress;
private String playerTelephoneNumber;
@ManyToMany(mappedBy = "players")
private Set<Team> teams = new HashSet<>();
@Enumerated(value = EnumType.STRING)
private FavouritePosition favouritePosition;
}
ich eine Bootstrap-Klasse erstellt haben, die Daten einige Daten aus Daten nehmen können. sQL-Datei:
@Component
public class EventBootstrap implements ApplicationListener<ContextRefreshedEvent>{
//There are some Repositories fields and constructor
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
eventRepository.saveAll(getEvent());
}
private List<Event> getEvent() {
List<Event> events = new ArrayList<>();
//Organizers
Optional<Organizer> ostrouchKolobrzeskaOrganizerOptional = organizerRepository.findByOrOrganizerLastName("Ostrouch");
if (!ostrouchKolobrzeskaOrganizerOptional.isPresent()){
throw new RuntimeException("Organizer not found !");
}
Organizer ostrouchKolobrzeskaOrganizer = ostrouchKolobrzeskaOrganizerOptional.get();
Optional<Organizer> kaimWestFootballPitchOrganizerOptional = organizerRepository.findByOrOrganizerLastName("Kaim");
if (!kaimWestFootballPitchOrganizerOptional.isPresent()){
throw new RuntimeException("Organizer not found!");
}
Organizer kaimWestFootballPitchOrganizer = kaimWestFootballPitchOrganizerOptional.get();
//Set 1 organizers
Set<Organizer> organizersSetOne = new HashSet<>();
organizersSetOne.add(kaimWestFootballPitchOrganizer);
organizersSetOne.add(ostrouchKolobrzeskaOrganizer);
//Set 2 organizers
Set<Organizer> organizerSetTwo = new HashSet<>();
organizerSetTwo.add(ostrouchKolobrzeskaOrganizer);
//Team
Optional<Team> jeppesenFootballTeamOptional = teamRepository.findByTeamName("Jeppesen Football Team");
if (!jeppesenFootballTeamOptional.isPresent()){
throw new RuntimeException("Expected football team not found");
}
Team jeppesenFootballTeam = jeppesenFootballTeamOptional.get();
Optional<Team> lufthansaFootballTeamOptional = teamRepository.findByTeamName("Lufthansa Football Team");
if (!lufthansaFootballTeamOptional.isPresent()){
throw new RuntimeException("Expected football team not found");
}
Team lufthansaFootballTeam = lufthansaFootballTeamOptional.get();
//Set 1 team
Set<Team> teamsSetOne = new HashSet<>();
teamsSetOne.add(jeppesenFootballTeam);
teamsSetOne.add(lufthansaFootballTeam);
//Set 2 team
Set<Team> teamsSetTwo = new HashSet<>();
teamsSetTwo.add(lufthansaFootballTeam);
//getPlayer
Optional<Player> przemekPlayerOptional = playerRepository.findByPlayerName("Przemyslaw");
if(!przemekPlayerOptional.isPresent()){
throw new RuntimeException("Expected player not found!");
}
Optional<Player> jakubPlayerOptional = playerRepository.findByPlayerName("Jakub");
if(!jakubPlayerOptional.isPresent()){
throw new RuntimeException("Expected player not found!");
}
Player przemekPlayer = przemekPlayerOptional.get();
przemekPlayer.setFavouritePosition(FavouritePosition.MIDFIELDER);
Player jakubPlayer = jakubPlayerOptional.get();
jakubPlayer.setFavouritePosition(FavouritePosition.ATTACKER);
Set<Player> playersSetOne = new HashSet<>();
playersSetOne.add(przemekPlayer);
playersSetOne.add(jakubPlayer);
Set<Player> playersSetTwo= new HashSet<>();
playersSetTwo.add(przemekPlayer);
//setPlayer for the team
jeppesenFootballTeam.setPlayers(playersSetOne);
lufthansaFootballTeam.setPlayers(playersSetTwo);
Event kolobrzeskaEvent = new Event();
kolobrzeskaEvent.setOrganizers(organizersSetOne);
kolobrzeskaEvent.setEventName("Kołobrzeska Event");
kolobrzeskaEvent.setTeams(teamsSetOne);
Event westEvent = new Event();
westEvent.setOrganizers(organizerSetTwo);
westEvent.setEventName("West Event");
westEvent.setTeams(teamsSetTwo);
events.add(kolobrzeskaEvent);
events.add(westEvent);
return events;
}
}
Es ist Frühling Bootprojekt mit thymeleaf und überwintert. Wenn ich die Anwendung starte und in die H2-Datenbankkonsole schaue, habe ich korrekte Tabellen: EVENT_ORGANIZER, ORGANIZER, EVENT, PLAYER, TEAM aber der TEAM_PLAYER ist leer, ich sehe keine Beziehung. Ich habe versucht, Debugger zu verwenden, aber keinen Effekt. Wo ist das Problem? Ich studierte alle Entitäten Klassen und Beziehungen sieht gut aus, das gleiche mit Bootstrap-Klasse.
Wenn Sie weitere Informationen benötigen, kommentieren Sie einfach. Vielen Dank für Ihre Unterstützung
EDIT: ich es noch einmal ausgetestet, und ich bemerkte, dass neben einige Variablen, die ich habe Ausnahme:
Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate java.util.Optional.toString()
Danach hole ich gesetzt = FetchType. EIFRIG. Aber die Ausnahme tritt immer in der Nähe von JeppesenFootballTeamOptional auf. Könnte es ein Problem mit Beziehungen in der Datenbank sein?
keine data.sql ist korrekt. Ich habe es dreimal überprüft. – przemekost