小编wie*_*cia的帖子

QueryDsl - 集合表达式中的子查询

我正在使用spring-data-jpa和querydsl(3.2.3)
我有一个场景,我根据用户文件管理器/输入创建一组谓词.所有这些都来了BooleanExpression.

我的简化模型如下:

@Entity
public class Invoice {
    @ManyToOne
    private Supplier supplier;
}

@Entity
public class Supplier {
    private String number;
}

@Entity
public class Company {
    private String number;
    private boolean active
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在努力解决的是这个问题:

SELECT * FROM Invoice WHERE invoice.supplier.number in (SELECT number from Company where active=true)
Run Code Online (Sandbox Code Playgroud)

所以基本上我需要以CollectionExpression类似格式的子查询来获取所有公司的数字并将其设置为in()表达式.

我的spring-data存储库实现CustomQueryDslJpaRepository了反过来扩展JpaRepositoryQueryDslPredicateExecutor.
我希望答案是直截了当的,但我对querydsl很新,到目前为止还没有找到解决方案.

java spring querydsl spring-data

13
推荐指数
1
解决办法
3万
查看次数

QueryDsl - 具有字符串值的case表达式

QueryDsl 3.3.4
Hibernate 3.6.10-Final我有两个实体:

public class Document {
    private Confirmation confirmation;
}

public class Confirmation {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我需要这样的查询:

SELECT count(d.id), CASE WHEN d.confirmation_id IS NULL then 'NOT_CONFIRMED' else 'CONFIRMED' END as confirmed FROM document d GROUP BY confirmed;
Run Code Online (Sandbox Code Playgroud)

所以它应该按照上面的case表达式的结果进行分组.
现在,将案例部分翻译为querydsl:

StringExpression confirmExp = new CaseBuilder()
    .when(Expressions.booleanTemplate("confirmation_id is null"))
    .then(Expressions.stringTemplate("NOT_CONFIRMED"))
    .otherwise(Expressions.stringTemplate("CONFIRMED"));
Run Code Online (Sandbox Code Playgroud)

我正在使用.when(Expressions.booleanTemplate("confirmation_id is null"))以避免加入confirmation桌面.使用这样的表达式运行查询我在下面得到一个例外.
这是另一个hibernate错误或这种情况需要不同吗?

java.lang.IllegalStateException:没有节点的数据类型:> org.hibernate.hql.ast.tree.CaseNode + - [CASE] CaseNode:'case'| + - [WHEN] SqlNode:'when'| | + - [IS_NULL] IsNullLogicOperatorNode:'为null'| | | - [IDENT] IdentNode:'confirmation_id'{originalText = …

java hibernate querydsl

7
推荐指数
1
解决办法
7722
查看次数

标签 统计

java ×2

querydsl ×2

hibernate ×1

spring ×1

spring-data ×1