gpt4 book ai didi

api - Criteria API - 在 ElementCollection 中使用 UPPER

转载 作者:行者123 更新时间:2023-12-04 14:38:48 25 4
gpt4 key购买 nike

我有课

@Entity
public class Person{
...
@ElementCollection
private Set<String> tags;
...
}

我想使用 JPA 2.0 Criteria API 来搜索这些标签 - 但以不区分大小写的方式。因此,我想将搜索参数设置为 UPPER 并将列设置为 UPPER(伪 SQL:从 Person p 中选择 p.* join Tags t on p.id=t.pId where upper(t.name)=upper('搜索参数'); )

这是我的代码,标签上没有 UPPER:

  CriteriaBuilder builder = this.em.getCriteriaBuilder();
CriteriaQuery<Person> query = builder.createQuery(Person.class);
Root<Person> root = query.from(Person.class);

return this.em.createQuery(query.select(root).where(
builder.isMember(builder.upper(builder.literal(searchTag)),
root.get(Person_.tags)))).getResultList();

其中 searchTag 是输入参数。

如何将 UPPER 分配给 Person_.tags“列”?

换句话说,我想用 Criteria API 编写这个查询:

SELECT p FROM Person p JOIN p.tags t WHERE UPPER(t) = UPPER('searchString')

谢谢

最佳答案

好吧,我终于有了解决方案:

  cQuery.where(
builder.equal(
builder.upper(cQuery.from(Relation.class).join(Relation_.aliase)
.as(String.class)),
builder.upper(builder.literal(alias))
)
);

必须使用“.as(..)”方法。

关于api - Criteria API - 在 ElementCollection 中使用 UPPER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192094/

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