【发布时间】:2015-04-22 04:14:47
【问题描述】:
假设您有一个 QueryDSL 查询,如下所示:
JPQLQuery query = new JPAQuery(em);
QUser user = QUser.user;
QLocation location= QLocation.location;
query.from(User).innerJoin(user.location, location).where(user.name.eq("Giuseppe").and(location.name.eq("Vatican City")));
这与以下(在功能上)有何不同?
JPQLQuery query = new JPAQuery(em);
QUser user = QUser.user;
query.from(User).where(user.name.eq("Giuseppe").and(user.location.name.eq("Vatican City")));
在我看来,两者都能够解决用户的位置必须是梵蒂冈城的条件。此外,两者都返回允许在对象图中导航的对象。
那么有什么不同吗?为什么不直接使用第二个更紧凑的?
编辑:它们生成不同的 JPQL,这是肯定的,但我不确定最终结果是否有任何不同。为什么我们要明确列出我们正在执行的连接操作?
编辑 2:似乎它们可能是相同的...http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch11.html#d5e2888
【问题讨论】:
标签: java sql jpa jpql querydsl