我正在使用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);
无论此电话号码是否可用于其他userId,都应返回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数据中@Query的文档:
Spring Data JPA
祝好运