Я пытаюсь использовать свой интерфейс репозитория, выглядит так.
interface SomeRepository extends JpaRepository<Some, Long> {
@org.springframework.lang.Nullable
Some findByKey(
@org.springframework.lang.NonNull
@javax.validation.constraint.NotNull
final String key);
}
И я обнаружил, что эти ограничения работают не так, как ожидалось.
@Test
void findByKeyWithNullKey() {
repository.findByKey(null);
}
Тестовый пример просто проходит.
Как заставить его работать?
Я бы предложил использовать проверку javax в вашей весенней структуре и предположить, что если вы используете maven, вам просто нужно включить ниже зависимость
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
после этого попробуйте код ниже
Some findByKey(
@NotNull final String key);
Согласно Документ Spring JPA:
Чтобы включить во время выполнения проверку ограничений допустимости значений NULL для методов запроса, необходимо активировать недопустимость NULL на уровне пакета с помощью Spring @NonNullApi.
вы можете добавить аннотации пакетов, просто создав файл package-info.java и добавив в него объявление пакета, к которому он относится. Затем добавьте эту аннотацию в свой пакет следующим образом:
@org.springframework.lang.NonNullApi
package com.example;
нет, это только для нулевой обработки. вы можете использовать ограничения спящего режима, как в сообщении ниже.
Он работает, когда вы вставили код. Конечно, вам нужно использовать @Repository в репо и удалить @ javax.validation.constraint.NotNull, поскольку это не то, что вы хотите. Кроме того, вам необходимо убедиться, что у вас есть правильный импорт в pom. Я бы рекомендовал сделать обратное, добавив ненулевой api на уровне пакета, а затем:
Rule findOneByExpression(@Nullable String expression);
ruleRepository.findOneByExpression(null);
И посмотрите, как он потерпит неудачу, если он вернет null. Затем измените его так:
@Nullable
Rule findOneByExpression(@Nullable String expression);
И это пройдет.
Я работаю как ты сказал. Охватывает ли он все проверки bean-компонентов, например
@Size?