JAVA Spring Boot-existsByColumne1AndNotColumn2 存储库查询

标签 java sql spring-boot spring-data-jpa

我正在使用 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/

相关文章:

java - Java中通过反射来转换对象

java - 将 SQL 查询输出存储在数组中

java - 找不到匹配项时 JPA 查询的返回值

java - org.springframework.dao.DataIntegrityViolationException : could not execute statement; SQL

java - JUnit 测试中的 SQLite 数据库锁定

java - 从 edittext 获取数值的另一种方法

.net - SQL - 我可以将表主键基于多个字段,要求第一个或第二个值的唯一性吗?

java - Hibernate 不使用 Spring 引导在 PostgreSql 中创建数据库

java - 反编译 Apk 文件后,我得到数字而不是常量。如何获取这些数字的字符串值?

sql - 如何使用 SQL 选择过去 24 小时的记录?