java - JPA:如果其他情况不适用于查询

标签 java jpa return repository

在下面的代码中,我想在找到数据时返回 true 或 false,但它给了我以下错误:|当具有特定电子邮件及其组 ID 的记录为 true 时,我想返回 true 或 false

public interface UserRepository  extends JpaRepository<User, Long> {
    @Query("Select User (CASE WHEN count(u) > 0 THEN TRUE ELSE FALSE END) from User u where u.email = :email and u.group.id=2")
      boolean findGroupOfUser(@Param("email") String email);
    }

异常(exception):

Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 \-[METHOD_CALL] MethodNode: '('
    +-[METHOD_NAME] IdentNode: 'User' {originalText=User}
    \-[EXPR_LIST] SqlNode: 'exprList'
       \-[CASE] SearchedCaseNode: 'CASE'
          +-[WHEN] SqlNode: 'WHEN'
          |  +-[GT] BinaryLogicOperatorNode: '>'
          |  |  +-[COUNT] CountNode: 'count'
          |  |  |  \-[ALIAS_REF] IdentNode: 'user0_.id' {alias=u, className=com.ivl.townsmate.model.User, tableAlias=user0_}
          |  |  \-[NUM_INT] LiteralNode: '0'
          |  \-[TRUE] BooleanLiteralNode: 'TRUE'
          \-[ELSE] SqlNode: 'ELSE'
             \-[FALSE] BooleanLiteralNode: 'FALSE'

    at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:160) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final]

最佳答案

假设您想要检查是否存在具有给定电子邮件地址和 groupid 2 的任何用户,您的查询应该更像这样:

select count(u) > 0 from User u where u.email = :email and u.group.id=2

如果您想获取与查询匹配的所有用户,应如下所示:

select u from User u where u.email = :email and u.group.id=2

如果您想让所有用户都带有一个标志,无论他们是否匹配,查询将如下所示:

select u, u.email = :email and u.group.id=2 from User u 

关于java - JPA:如果其他情况不适用于查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43910718/

相关文章:

c++ - 如何在 C++ 中将控制权从一个函数传递给另一个函数

java - 检测用户何时控制单击 JTree?

java - 在测试中使用 DateTimeUtils.setCurrentMillisFixed 是否安全?

java - 如何在 JSP 中访问 session 属性 ArrayList<objects> 中的元素

java - 编辑 Java Web 应用程序

java - @NamedStoredProcedureQuery with Spring Data JPA Repository - Type cannot be null 错误

java - 当事务更新数千个实体时如何避免 StaleObjectStateException?

java - 在 JPQL 中,是否可以将列表作为参数写入 "select new"?

c - C 中的递归和返回语句

java - 如何让方法返回多个对象?