У меня возникла проблема: когда в запросе к БД есть уникальное ограничение,
, а затем я хочу вставить его снова, я хотел переопределить исключение по умолчанию.
, например, когда имея такую таблицу БД
CREATE TABLE IF NOT EXISTS $ENROLLED_USERS_TABLE (
id INT AUTO_INCREMENT PRIMARY KEY,
$USERS_FIELD VARCHAR(250) NOT NULL UNIQUE
);
и репо вроде этого
@Repository
interface UserRepository: ReactiveCrudRepository<User, Int>{
@Modifying
@Query("insert into $ENROLLED_USERS_TABLE ($USERS_FIELD) values (:user)")
fun insertUser(@Param("user") user: String?): Mono<Void?>?
}
это мой контроллер
@PostMapping("/{user}")
suspend fun add(@PathVariable user:String): Void? = userRepository.insertUser(user)?.awaitFirstOrNull()
Я попытался попробовать их и поймать, но это не сработало, чтобы поймать
@Service
class UserService(val userRepository: UserRepository) {
suspend fun add(user:String) {
try {
// some code
userRepository.insertUser(user)?.onErrorReturn(throw ResourceAlreadyExists("User Already exists"))
}
catch (e: SQLException) {
println("Custome Message")
}
}
}
ничего не работает, я все еще получаю исключение, которое показывает мой запрос к базе данных: /