gpt4 book ai didi

java - 为什么以下查询不能使用双 LIKE 子句?

转载 作者:行者123 更新时间:2023-11-29 03:25:02 25 4
gpt4 key购买 nike

我正在使用 GAE 的数据存储和 JPA 持久性框架来存储我的实体。尽管在尝试检索某些特定实体时我遇到了下面提到的问题。

在我的 TypedQuery 上调用 getResultList() 方法时抛出以下异常:javax.persistence.PersistenceException: Illegal argument

    EntityManager em = Persistence.createEntityManagerFactory("test-persistence")
.createEntityManager();
String q = "SELECT c FROM c TestBord c WHERE c.publiclyAvailible=true
AND c.avarageRating='5'
AND c.user LIKE 'user%'
AND c.nameBord LIKE 'bord%'";
TypedQuery<TestBord> tq = em.createQuery(q, TestBord.class);
List<TestBord> l = tq.getResultList();

同样如上所示,这是我正在使用的查询:

SELECT c FROM c KvCBord c WHERE c.publiclyAvailible=true 
AND c.avarageRating='5'
AND c.user LIKE 'user%'
AND c.nameBord LIKE 'bord%'

当我使用两个 LIKE 子句时它似乎中断了,有人知道如何解决这个问题,或者知道如何正确重写查询吗?

注意:尽管只有一个 LIKE 子句也能正常工作。

最佳答案

AppEngine 将您的 GQL 查询转换为低级别的 Datastore API 查询。根据Restrictions on queries Java 文档,“不等式过滤器仅限于最多一个属性”。这通常是因为索引选择。 LIKE 运算符成为不等式过滤器,不能同时应用于同一查询中的 .user 和 .nameBord 属性。

关于java - 为什么以下查询不能使用双 LIKE 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462633/

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