【发布时间】:2016-12-15 06:15:25
【问题描述】:
我正在尝试创建一个查询以使用 JPA 标准查询恢复与用户相关的所有站点:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Site> query = cb.createQuery(Site.class);
Root<Site> fromSite = query.from(Site.class);
Join<UserSiteClientRolePK, Integer> joinUser = fromSite
.join(Site_.siteClients)
.join(SiteClient_.usersSitesClientsRoles)
.join(UserSiteClientRole_.id)
.join(UserSiteClientRolePK_.userid);
query = query.select(fromSite);
query = query.where(cb.equal(joinUser, userid));
TypedQuery<Site> typedQuery = em.createQuery(query);
List<Site> sites = typedQuery.getResultList();
但是,当我测试我的代码时,我得到了这个错误:
<openjpa-2.4.0-r422266:1674604 fatal general error>
org.apache.openjpa.persistence.PersistenceException:
ERROR: error de sintaxis en o cerca de «AND»
Position: 440 {prepstmnt 737085888
SELECT ...
WHERE (t3.userid = ? AND AND ) [params=?]} [code=0, state=42601]
由于某种原因,OpenJPA 在自动生成的 SQL 脚本末尾包含错误的 SQL 代码“AND AND)”,我不知道为什么。
这让我发疯了。有人可以帮帮我吗?
顺便说一下,我使用的是 OpenJPA 2.4.0 版。
非常感谢。亲切的问候。
【问题讨论】: