TypedQuery <x>返回Object []的向量而不是x-type对象的列表</x>

时间:2014-04-21 17:49:16

标签: jpa types eclipselink

我有一个方法:

public List<Timetable> getTimetableTableForRegion(String id) {
        List<Timetable> timetables;
        TypedQuery<Timetable> query = em_read.createQuery("SELECT ..stuff.. where R.id = :id", Timetable.class).setParameter("id", Long.parseLong(id));
        timetables = query.getResultList();

        return timetables;
    }

返回:

enter image description here

那么,为了返回Timetable的列表,我错过了什么?

3 个答案:

答案 0 :(得分:1)

好的,所以,..stuff..我的JPQL的一部分包含了对其他表的内部联接。即使在SELECT中,只有一个表中的选定字段被用作类型 - Timetable,Eclipslink无法确定这些字段是否是该实体的一部分而不是返回已定义实体的列表返回{ {1}}。

总而言之:使用@ OneToMany / @ ManyToOne映射(或平面表设计)并仅查询JPQL中的一个表,以便能够对返回的实体进行典型化。

答案 1 :(得分:0)

不确定它可能正在寻找,但我有类似的问题,并将Vector转换为ArrayList,如下所示:

    final ArrayList<YourClazz> results = new ArrayList<YourClazz>();;
    for ( YourClazzkey : (Vector<YourClazz>) query.getResultList() )
    {
        results.add(key);
    }

答案 2 :(得分:0)

我也遇到了同样的问题。我的实体没有一对一或一对多的关系。然后jpql还给我queryresult作为对象的向量。我将我的解决方案更改为查询条件构建器。那对我有用。 代码段如下:

myView.layer.contents = UIImage(named: "star")