NamedQuery在列表中首先选择

时间:2013-11-20 15:42:29

标签: java sql jpa

我尝试创建一个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")

但我总是“查询包含格式错误的结尾”问题。

有人能帮帮我吗?

1 个答案:

答案 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是否存在可能的例外情况。