Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有可能创建;存在给定id的对象;使用spring数据存储库对不同类进行约束注释?_Java_Spring_Spring Boot_Spring Data Jpa - Fatal编程技术网

Java 是否有可能创建;存在给定id的对象;使用spring数据存储库对不同类进行约束注释?

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

在我的项目中,我有许多实现极其相似逻辑的注释——它们都检查给定id的对象是否存在并在DTO中使用。验证器如下所示(输入任何类代替
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;
    }
}