我是JPA/JPQL的新手,所以如果这个问题不是很清楚,请原谅。
class ComplexObject {
private Set< SubOject1> so1 ...
.....
@OneToMany(fetch = FetchType.LAZY)
public Set< SubOject1>...
}
class SubObject1 {
private Set< SubOject2> so2 ...
.....
@OneToMany(fetch = FetchType.LAZY)
public Set< SubOject2>...
}
我正在使用以下JPQL查询:
select distinct CO
from ComplexObject CO
left join fetch CO.so1 SO1
left join fetch SO1.so2
查询在无状态会话上运行,以便获得DB中当前数据的事实上的快照,该快照与实体管理器分离(因此使用了left join fetch)。
不幸的是,我遇到了两个问题:
在尝试微调性能时,使用本机查询似乎并没有比使用JPQL查询更好的性能。使用本机查询也会产生对象类型的结果,这需要后期处理。
可以使用视图对象仅接收所需的列:
StringBuilder sb = new StringBuilder();
sb.append(" SELECT new ").append(ObjectVO.class.getName()).append("(co.someInfo1, co.someInfo2, so1.someInfo )");
sb.append(" FROM ComplexObject co ");
sb.append(" JOIN co.subOject1s so1 ");
sb.append(" LEFT JOIN so1.so2 so2 ");
sb.append(" WHERE so1.id = :idSo1 AND so2 = :someThing");
Query q = em.createQuery(sb.toString());
q.setParameter("idSo1", idSo1);
q.setParameter("someThing", someThing);
List<ObjectVO> listResult = q.getResultList();
ObjectVO类:
public class ObjectVO {
private String info1;
private Long info2;
private String info3;
public PedidoModel(String info1, Long info2, String info3){
this.info1 = info1;
this.info2 = info2;
this.info3 = info3;
}
}
如何将这个复杂的sql语句更改为JPQL? 这是否可以在JPQL表单中显示?
我有2个实体(这只是一个简化的例子,不是真正的实体): 当我尝试使用order By编写查询时,Hibernate崩溃: 原因:java.sql.SqlSyntaxerRoreXception:ORA-01791:不是选定的表达式
问题内容: 在JPQL中,我可以通过以下方式检索实体: 但是,如果我想检索Category实体的id和name字段(仅),则需要像对象这样的东西,通过它我可以说:和。如何在不检索整个实体的情况下做到这一点? 基本上,对于如何检索像查询的信息:? 问题答案: 在HQL中,可以使用list()函数获取包含结果行的Object []数组的列表: 返回数组中的第一个元素将是id,第二个-名称。 如果要使用
RDF的结果:ClassA类型: 在Protege:x1,x2,x3,x4在Eclipse through Jena:x1,x2,x3,x4,x5,x6,x7,x8,X9... 在本体编辑器中,它工作得很好。然而,在Java中,当我执行查询时,我也得到了不属于该类的个体,但它们通过属性与类个体之一相连。有人知道怎么解决吗?本体论是正确的。 null 门生:
我正在为授权服务器开发一个管理用户界面。其中一个功能是显示登录用户的列表,我们通过查询存储当前发布的刷新令牌的数据库表来实现这一点。用户可以从多个设备登录到同一个应用程序,生成多个令牌。目前的要求不是按设备细分此视图,而是如果用户已登录,则它们将显示在列表中。如果我们撤销访问权(此UI的其他要求之一),那么所有设备的刷新令牌都将被撤销。 不管怎样,最让我困惑的是这个问题。我编写这个查询是为了收回指
问题内容: 我正在寻找一种在REST API中为搜索查询建模的可靠方法。 在我的api中,您可以使用查询参数在资源的URI中指定搜索条件。 例如: 在服务器端,搜索字符串映射到所需的基础技术。根据其余资源,这可以是一个SQL查询,Hibernate Criteria api,另一个Web服务调用,… 这两个示例很简单,足以支持,但是我还需要更复杂的搜索功能,例如子字符串搜索,日期前后的搜索,NOT