我有一个实体Foo
,包含Bar
s的嵌入式集合。
@Entity
@Table(name = "foo")
public class Foo {
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "bar", joinColumns = @JoinColumn(name = "foo_id"))
private Set<Bar> bars = new HashSet<>();
//...
}
@Embeddable
public class Bar {
@Column(name = "value", nullable = false)
private String value;
//...
}
我想在Set中找到与给定参数(String)匹配的所有Foo
s。
我想在JPQL中实现的一些伪代码:
Foo find(String toMatch) {
return allFoos.stream()
.filter(f -> f.getBars.stream()
.map(Bar::getValue)
.anyMatch(value -> value.equals(toMatch)))
.findFirst()
.get();
}
但是,当我尝试这个查询时:
@Repository
public interface FooRepository extends JpaRepository<Foo, Long> {
@Query("select f from Foo f " +
"where (" +
" :toMatch in f.bars.value " +
")")
Optional<Foo> find(@Param("toMatch") String toMatch);
}
它抛出:
由以下原因引起:org.hibernate.QueryException:非法尝试使用元素属性引用[value]取消引用集合[foo.id.bars]
我希望避免使用需要连接多个表的解决方案。这是伪代码,但实际查询中充满了大量复杂的大型企业SQL where或and语句。所以越少加入越好。
我相信正确的JPQL查询应该是这样的:
select f from Foo f where f.id in (
select b.id from f.bars b where b.value=:toMatch
)
我有一个实体,包含s的嵌入式集合。 我想找到集合中与给定参数(字符串)匹配的所有s。 我想在JPQL中实现的一些伪代码: 但是,当我尝试此查询时: 它抛出: 我希望避免使用需要连接多个表的解决方案。这是伪代码,但实际查询中充满了大量复杂的大型企业sql where或and语句。所以越少加入越好。
我有这样嵌套条目的文档: 因此,第二个条目中的*是实际的字符串值,而不是通配符。 现在,我正尝试使用以下主体查询具有key1:value3和key2:*的所有文档: 但是,这根本不会返回任何文档。 此外,使用“\\*”作为key2的查询参数也没有帮助。 是否有可能将*作为实际的String值而不是通配符查询? 第一次回答后编辑,并提示Analyzer设置:尝试将我的索引配置为使用映射字符过滤器,如
我在JPA repository类中编写了一个查询,如下所示: 上述查询的问题是,如果参数:和都为空,则需要获取所有记录,而这不会发生。到目前为止,没有获取任何记录。 基本上,我希望编写的查询能够正确地适用于所有情况,即参数和都采用空值和非空值。 在这方面,我已经了解了CriteriaBuilder的概念,但无法正确掌握该概念以实现我的案例。 有人能帮忙吗?谢谢 编辑 我已经在控制台中记录了查询,
我正在努力编写一个具有多个和/或条件的弹性搜索查询。 它的基本逻辑如下: 正如docs中提到的,如果一个文档只满足must子句,那么它就被认为是匹配的。在这种情况下,should子句起到增强作用,即如果文档除了mouth子句之外还匹配一个或多个should子句,那么它将具有更高的相关性得分,假设cond2、cond3和cond4是计算相关性得分的查询。 问题是我只想要至少匹配OR条件之一的文档。
我正在用Swagger 2.0记录一个Rails应用程序,并使用Swagger-UI作为人类可读的文档/沙盒解决方案。 我有一个资源,客户端可以在其中存储任意元数据以供以后查询。根据 Rails 约定,查询将按如下方式提交: Rails将其转换为以下参数: 它可以很容易地用于为数据库生成适当的 子句。 Swagger里有支持这种东西的吗?我想最终让Swagger-UI提供一些方法来修改生成的请求,
我正在尝试正确定义 OpenAPI 规范,以便从该规范生成 api 客户端。我已经解决了一个问题,即我们有一个复杂的查询对象,其中包含嵌套对象和对象数组,用于获取 GET 路由。 让我们以这些类为例。 和一个带有@Query decorator的get请求。 我得到的是。 我还尝试通过添加@ApiQuery装饰器来定义查询参数,它几乎可以工作。 - 但是现在我正在将重复的查询定义混入一个。有没有办