Java 是否有可能创建;存在给定id的对象;使用spring数据存储库对不同类进行约束注释?
在我的项目中,我有许多实现极其相似逻辑的注释——它们都检查给定id的对象是否存在并在DTO中使用。验证器如下所示(输入任何类代替Java 是否有可能创建;存在给定id的对象;使用spring数据存储库对不同类进行约束注释?,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,在我的项目中,我有许多实现极其相似逻辑的注释——它们都检查给定id的对象是否存在并在DTO中使用。验证器如下所示(输入任何类代替User): 但是,有人告诉我,我不应该在这个项目中使用EntityManager(因为这将是唯一使用它的地方,它也有自己的问题) 所以我的问题是: 使用某种类型的通用存储库(我所有的类都已经扩展了一些BaseEntity)是否可以实现相同的行为?如果是,存储库应该是什么样子,约束验证器应该是什么样子 @AllArgsConstructor public class U
User
):
但是,有人告诉我,我不应该在这个项目中使用EntityManager
(因为这将是唯一使用它的地方,它也有自己的问题)
所以我的问题是:
使用某种类型的通用存储库(我所有的类都已经扩展了一些BaseEntity
)是否可以实现相同的行为?如果是,存储库应该是什么样子,约束验证器应该是什么样子
@AllArgsConstructor
public class UserExistsValidator implements ConstraintValidator<UserExists, Long> {
private UserRepository userRepository;
@Override
public boolean isValid(Long id, ConstraintValidatorContext context) {
return userRepository.existsById(id);
}}
@AllArgsConstructor
public class ObjectOfIdExistsValidator implements ConstraintValidator<ObjectOfIdExists, Long> {
private final EntityManager entityManager;
private Class clazz;
@Override
public void initialize(ObjectOfIdExists constraintAnnotation) {
clazz = constraintAnnotation.clazz();
}
@Override
public boolean isValid(Long id, ConstraintValidatorContext constraintValidatorContext) {
return entityManager.find(clazz, id) != null;
}
}