Gdy próbuję zapisać obiekt z kolumną (unique = true)
o wartości takiej samej jaka jest już w bazie to dostaję wyjątek:
org.h2.jdbc.JdbcSQLException: Naruszenie ograniczenia Klucza Głównego lub Indeksu Unikalnego: ...
a gdy próbuję zapisać 2 razy tego samego Clienta to, co prawda nie zapisuje się do bazy dwukrotnie, ale nie dostaję żadnego wyjątku.
Jak nakazać JPA wyrzucanie wyjątku w tym przypadku?
@PostMapping
@ResponseStatus(code = HttpStatus.CREATED)
public ClientDto createNewClient(@RequestBody ClientDto clientDto) {
return clientService.createNewClient(clientDto);
}
@Entity
public class Client {
@Id
@NIP
@Column(length = 10, updatable = false)
public final String nip;
// ...
}
@Service
public class ClientServiceImpl implements ClientService {
// ...
@Override
public ClientDto saveClient(Client client) {
client = clientRepo.save(client);
return clientMapper.sourceToDto(client);
}
@Override
public ClientDto createNewClient(ClientDto clientDto) {
userService.createNewUserIfNoExist(clientDto.getUserDto());
addressService.createAddressIfNoExist(clientDto.getContactAddress());
addressService.createAddressIfNoExist(clientDto.getRegisterAddress());
Client client = clientMapper.dtoToNewSource(clientDto);
return this.saveClient(client);
}
// ...
}