Hi
Ich möchte mit MapStruct meine Dtos zu Entities Mappen, da die Dtos nur die IDs von den Member enthalten, brauche ich in meinem Mapper die Repositories um die Member anhand der ID zu bekommen.
Nun werden die Repositories jedoch nicht instanziert.
Mapper:
Hier bekomme ich eine NullpointerException weil playerRepository im Mapper null ist.
Test:
Ich möchte mit MapStruct meine Dtos zu Entities Mappen, da die Dtos nur die IDs von den Member enthalten, brauche ich in meinem Mapper die Repositories um die Member anhand der ID zu bekommen.
Nun werden die Repositories jedoch nicht instanziert.
Mapper:
Java:
@Mapper(componentModel = "spring", uses = {PlayerMapper.class, PlayerRepository.class, TournamentRepository.class})
public abstract class TournamentPlayerMapper {
@Autowired
protected PlayerRepository playerRepository;
@Autowired
protected TournamentRepository tournamentRepository;
@Mapping(source = "player.id", target = "playerId")
public abstract TournamentPlayerDto fromTournamentPlayerToDto(TournamentPlayer tournamentPlayer);
public abstract TournamentPlayer fromTournamentPlayerDtoToEntity(TournamentDto tournamentDto);
protected Player fromLongToPlayer(Long playerId) {
return playerRepository.findById(playerId).orElseThrow(PlayerNotFoundException::new);
}
protected Tournament fromLongToTournament(Long tournamentId) {
return tournamentRepository.findById(tournamentId).orElseThrow(TournamentNotFoundException::new);
}
}
Java:
public class TournamentPlayer extends BaseEntity{
@OneToOne(cascade = MERGE)
private Player player;
@OneToOne(cascade = MERGE)
private Tournament tournament;
private LocalDateTime registeredAt;
@PrePersist
private void setRegisteredAt() {
registeredAt = LocalDateTime.now();
}
}
Java:
public record TournamentPlayerDto(Long id, long playerId, long tournamentId, LocalDateTime registeredAt) {
}
Hier bekomme ich eine NullpointerException weil playerRepository im Mapper null ist.
Test:
Java:
@Test
void player_should_be_mapped_by_id() {
TournamentPlayer tournamentPlayer = tournamentPlayerRepository.findById(testTournamentPlayer.getId())
.orElseThrow();
Player player = tournamentPlayer.getPlayer();
Player fromLongToPlayer = tournamentPlayerMapper.fromLongToPlayer(player.getId());
assertNotNull(fromLongToPlayer);
}