【发布时间】:2021-06-23 04:21:46
【问题描述】:
我的存储库getUserByNameAndAge() 中有一个方法,它通过2 个参数从数据库返回一个用户。在我的服务层中,我需要检查,如果我没有请求名称的 DB 用户,我需要抛出一些自定义 InvalidUserNameException,如果我没有这样年龄的 db 用户,我需要抛出一些自定义InvalidUserAgeException。但是我真的不明白我该怎么做。
这是我的仓库
interface UserRepository : JpaRepository<CountryLocalization?, Long?> {
@Query(value = "SELECT u.name, u.age FROM users AS u" +
" WHERE u.name = :name AND u.age = :age",
nativeQuery = true)
fun getUserByNameAndAge(
@Param("name") name: String,
@Param("age") age: Int
): User?
}
那么我该如何实现我的服务呢?
@Service
class UserServiceImpl (val userRepository: UserRepository) : UserService {
override fun getUserByNameAndAge(name: String, age: Int): User {
/// implementation
}
}
【问题讨论】:
-
首先,您需要真正使用您的存储库来获取数据。然后你可能需要改变你的方法:1)通过 id 获取用户,如果你没有得到任何东西,则抛出 InvalidUserNameException;2)如果你有用户检查年龄,如果错误则抛出 InvalidUserAgeException。只需一次查询,您就可以检查姓名和年龄的组合,但如果没有得到任何结果,您将无法判断什么是无效的。
标签: java sql spring-boot kotlin