我尝试创建一个namedQuery:
@NamedQuery(name = "Interval.findByMemoryType",
query = "select i from Interval i JOIN i.intervalDatas id "
+ "where id.fragments.memoryType = :memoryType")
我的问题是,片段是片段列表。我只对列表中第一个元素的内存类型感兴趣。
所以我应该有这样的事情:
@NamedQuery(name = "Interval.findByMemoryType",
query = "select i from Interval i JOIN i.intervalDatas id "
+ "(select first(id.fragments)) as fid) where fid.memoryType = :memoryType")
但我总是“查询包含格式错误的结尾”问题。
有人能帮帮我吗?
答案 0 :(得分:0)
您可以获得第一个结果:
TypedQuery<Interval> q = em.createQuery ("Interval.findByMemoryType", Interval.class);
q.setParameter("memoryType", memoryType);//+other parameters if you have
Interval interval = q.getSingleResult();
小缺点是它可能会加载其所有intervalDatas(取决于映射)。另请检查the documentation是否存在可能的例外情况。