gpt4 book ai didi

java - CLOB 和 CriteriaQuery

转载 作者:行者123 更新时间:2023-11-30 06:54:08 25 4
gpt4 key购买 nike

我有一个具有 CLOB 属性的实体:

public class EntityS {
...
@Lob
private String description;
}

为了从数据库中检索某些实体,我们使用 CriteriaQuery,其中我们需要结果是唯一的,所以我们这样做:

query.where(builder.and(predicates.toArray(new Predicate[predicates.size()]))).distinct(true).orderBy(builder.asc(root.<Long> get(EntityS_.id)));

如果我们这样做,我们会收到以下错误:

ORA-00932: inconsistent datatypes: expected - got CLOB

我知道这是因为在选择 CLOB 时不能使用不同的值。但我们需要 CLOB。使用带有谓词等的 CriteriaQuery 是否有解决方法?

我们正在使用一种丑陋的解决方法来摆脱 .unique(true) 然后过滤结果,但这很糟糕。我们使用它只是为了能够继续开发应用程序,但我们需要更好的解决方案,但我似乎没有找到......

最佳答案

如果您使用 Hibernate 作为持久性提供程序,您可以指定以下查询提示:

query.setHint(QueryHints.HINT_PASS_DISTINCT_THROUGH, false);

这样,“distinct”就不会传递给 SQL 命令,但 Hibernate 将只返回不同的值。

请参阅此处了解更多信息:https://thoughts-on-java.org/hibernate-tips-apply-distinct-to-jpql-but-not-sql-query/

关于java - CLOB 和 CriteriaQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42160273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com