我正在使用 Java Spring Boot,我想创建默认查询来查找是否已存在具有给定手机号码而不是给定用户 ID 的用户。原始查询是这样的
SELECT * FROM `user` WHERE mobile = "9898989898" AND user_id != 123
我确实发现要检查单列数据是否存在于该列中,我们可以在 Repository 类中执行类似的操作
Boolean ExistWithMobile(String mobile)
如果找到包含给定手机号码的行,则返回 true 或 false。
我想要类似于上面的查询的方式相同,但这不起作用
Boolean existsByMobileAndNotUserId(String mobile, Long userId);
无论此电话号码是否可用于其他用户 ID,这都应返回 true 或 false
我知道如何使用原始查询,因为我已经在问题开始时提到了这一点,但我想要类似这种直接查询方式的东西,而不需要原始查询。
如有任何帮助,我们将不胜感激。
最佳答案
如果你不想使用原生sql查询,你可以使用HQL。
就你的情况而言:
@Query("from User u Where u.mobile = :mob and u.id != :id")
Optional<User> findUserByMobile(@Param("mob") String mobile, @Param("id") long id)
当你打电话时:
Optional<User> user = repo.findUserByMobile(mobile, uid);
if( user.isPresent() ) { ... }
这里是 Spring Data 中的 @Query 文档: Spring Data JPA
祝你好运
关于JAVA Spring Boot-existsByColumne1AndNotColumn2 存储库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61412049/