【发布时间】:2017-02-13 08:41:04
【问题描述】:
如何从 Spring JPA 存储库创建 分离插入和更新功能的自定义方法?假设 create 方法用于插入,update 方法用于更新。
补充问题: 为什么 Spring JPA Repository 不按设计分离这些方法?
我目前的实现是在服务层创建验证。
我的仓库
public interface UserRepository extends CrudRepository<User, Integer> {}
我的服务
@Service
public class UserService {
public void addUser(User user) {
if (!userRepository.exists(user.getId())) {
userRepository.save(user);
}
}
public void updateUser(int id, User user) {
if (userRepository.exists(user.getId())) {
userRepository.save(user);
}
}
}
【问题讨论】:
-
您可以在创建存储库时尝试@Override 保存方法,然后创建更新方法。但我认为这不是一个好的解决方案。
-
为什么要它,要达到什么目的? @Mike:你不能覆盖它,因为保存方法是写在 CrudRepository
接口中的。 -
我在写之前试过了,它正在编译,所以我认为你可以做到。这是一个尝试,但正如我所说,这不是一个好的解决方案。
-
@Mike 我完全理解 ;) 我有时也只是在心里给出建议,但结果却是行不通的:P 只是为了帮助这里的其他人,我假设你也尝试过同样的方法,那就是伟大的! :)
-
嗨。我需要存储库级别或更底层的方法,因此我可以调用该方法,而无需在服务层的每个插入或更新中创建验证。
标签: java spring spring-data-jpa