Save Entity With List of entities

8u3631984

Bekanntes Mitglied
Halllo zusammen

ich habe folgendes vor : Ich möchte in einer Team Klasse eine List von Athleten speichern.

Hier meine Team Klasse :
Java:
@Entity
@Builder(setterPrefix = "with")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
@EqualsAndHashCode
public class Team implements ITeam {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Getter
    private Integer id;

    // required field
    @NonNull
    @Getter
    @EqualsAndHashCode.Exclude
    private String name;

    @NonNull
    @OneToMany(mappedBy = "order", fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
    @Getter
    private List<Athlete> athleteList;

Hier meine Athlete Klasse :
Java:
@Entity
@Builder(setterPrefix = "with")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
@EqualsAndHashCode
public class Athlete implements IAthlete {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Getter
    private Integer id;

    // required field
    @NonNull
    @Getter
    @EqualsAndHashCode.Exclude
    private String name;

    // required field
    @NonNull
    @Getter
    @EqualsAndHashCode.Exclude
    private String preName;

    // required field
    @NonNull
    @Getter
    @EqualsAndHashCode.Exclude
    private LocalDate birthday;

    // required field
    @NonNull
    @Getter
    @EqualsAndHashCode.Exclude
    private Gender gender;
}

Hier die beiden Repositories :

[CODE lang="java" title="Team Repository"]
@Repository
public interface ITeamRepository extends JpaRepository<Team, Integer> {

default Team saveObject(@NonNull Team team) {
// define filter
Predicate<Team> filterByName = t -> t.getName().equals(team.getName());

Predicate<Team> filterByClub = t -> {
if (team.getClub().isPresent()) {
return t.getClub().isPresent() && t.getClub().get().getId() == team.getClub().get().getId();
} else {
return !t.getClub().isPresent();
}
};

Predicate<Team> filterByCompetition = t -> {
if (team.getCompetition().isPresent()) {
return t.getCompetition().isPresent() && t.getCompetition().get().getId() == team.getCompetition().get().getId();
} else {
return !t.getCompetition().isPresent();
}
};

Optional<Team> searchResult = findAll()
.stream()
.filter(filterByName.and(filterByClub).and(filterByCompetition))
.findFirst();

if (searchResult.isPresent()) {
return searchResult.get();
} else {
return save(team);
}
}
}
[/CODE]

Und hier mein Athlete Repository :
Java:
@Repository
public interface IAthleteRepository extends JpaRepository<Athlete, Integer> {

    default Athlete saveObject(@NonNull Athlete athlete) {
        // define filter
        Predicate<Athlete> filterByName = a -> a.getName().equals(athlete.getName());

        Predicate<Athlete> filterByPreName = a -> a.getPreName().equals(athlete.getPreName());

        Predicate<Athlete> filterByGender = a -> a.getGender().equals(athlete.getGender());

        Predicate<Athlete> filterByBirthday = a -> a.getBirthday().equals(athlete.getBirthday());

        Optional<Athlete> searchResult = findAll()
                .stream()
                .filter(filterByName.and(filterByPreName).and(filterByGender).and(filterByBirthday))
                .findFirst();

        if (searchResult.isPresent()) {
            return searchResult.get();
        } else {
            return save(athlete);
        }
    }
}

Ich versuche per :
Java:
        team1 = Team.builder()
                .withName(TEAM1_NAME)
                .build();
        log.info("build team object : {}", team1);

        team1 = teamRepository.saveObject(team1);
        log.info("saved team : {}", team1);

Das Team zu speichern. Bekommen aber folgende fehler :
Java:
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: model.athlete.Athlete.order in model.team.Team.athleteList
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:844) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:795) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:53) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1693) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1661) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:295) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]

Hat jemand eine Idee woran es liegen könnte ?

Vielen Dank !
 

thecain

Top Contributor
Und wenn du schon die ganzen Interfaces machst (was meiner Meinung nach unnötig ist) solltest du sie auch verwenden. Hat aber nichts mit dem Problem zu tun.
 

8u3631984

Bekanntes Mitglied
Vielen Dank euch beiden. Der Tipp mit dem mappedBy war goldrichtig. Die Interfaces werden im Repository Manager verwendet.Den Ausschnitt habe ich allerdings nicht gepostet
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Spring JPA / Hibernate: save Methode arbeitet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 2
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 5
Z JPA Extra-Entity für Many-To-Many gewissermaßen zu Fuß Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 JPA - Entity dopplet inder Datenbank verhindern - UniqueConstraint scheitern aufgrund Vererbung ? Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand DTO <> Entity Hibernate Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 28
L Spring Data: Detached Entity passed to persist Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 6
L Spring Data: Multiple representations of the same entity Frameworks - Spring, Play, Blade, Vaadin & Co 14
L Spring JPA Entity Definierung Frameworks - Spring, Play, Blade, Vaadin & Co 0
B Spring / Jpa / Hibernate -> java.lang.IllegalArgumentException: Unknown entity Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand XML Jackson Mapping in List deserialisieren Frameworks - Spring, Play, Blade, Vaadin & Co 1

Ähnliche Java Themen

Neue Themen


Oben