ObjectDB ObjectDB

How to query for list of lists ?



I have a problem with constructing query, that gets only embedded list of integers from Entity. Here's the example :

Query query = em.createQuery("SELECT i.filterDescription FROM Inspiration i");
List<List<Integer>> result = query.getResultList();

where Inspiration is like this :

@Entity(name = "Inspiration")
public class Inspiration implements Serializable {

@ElementCollection(fetch = FetchType.EAGER)
protected List<Integer> filterDescription;

Whene i try to run this code I get error :

Caused by: com.objectdb.o.UserException: Invalid result expression 'java.util.List' for an aggregate query
at com.objectdb.o.MSG.d(MSG.java:61)
at com.objectdb.o.QRC.G(QRC.java:609)
at com.objectdb.o.QRC.F(QRC.java:565)
at com.objectdb.o.QRC.E(QRC.java:514)
at com.objectdb.o.QRC.v(QRC.java:211)
at com.objectdb.o.QRC.u(QRC.java:166)
at com.objectdb.o.QRM.U4(QRM.java:245)
at com.objectdb.o.MST.U4(MST.java:947)
at com.objectdb.o.WRA.U4(WRA.java:290)
at com.objectdb.o.WSM.U4(WSM.java:113)
at com.objectdb.o.STC.r(STC.java:447)
at com.objectdb.o.SHN.aj(SHN.java:489)
at com.objectdb.o.SHN.K(SHN.java:156)
at com.objectdb.o.HND.run(HND.java:133)
at java.lang.Thread.run(Thread.java:662)

Is it a bug or am I doing something wrong?


Collections cannot be specified directly in the SELECT clause.

But this should work:

SELECT f FROM Inspiration i JOIN i.filterDescription f
ObjectDB Support

When I tried using the as described by support it only returns the first one as an Integer and not a list of all of them.



Adding more details:


I get the same error: "Invalid result expression 'java.util.List' for an aggregate query"



@Table(name = "pulseDataWareHouse")

public class PulseDataWareHouse implements Serializable {

    private static final long serialVersionUID = 1L;
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name= "reviewSnippets")
    @ElementCollection(fetch = FetchType.EAGER)
    private List<String> reviewSnippets;



Finally the query is: 

SELECT  w.reviewSnippets FROM PulseDataWareHouse w

That throws the error.


When following the example posted by support,

SELECT s FROM PulseDataWareHouse w JOIN w.reviewSnippets s

I don't get an error but instead only the get the first entry String from reviewSnippets.


Thanks for any help.

SELECT  w.reviewSnippets FROM PulseDataWareHouse w

You cannot select a list, so this is an invalid JPQL query.

SELECT s FROM PulseDataWareHouse w JOIN w.reviewSnippets s

This should work, and the results should include all the strings. Please provide a full test case that demonstrates this issue.

ObjectDB Support


To post on this website please sign in.