2015-02-12 9 views
10

Im Allgemeinen wir die Abfrage alsWie Hibernate Frühling Repository machen HashMap zurückzukehren

@Query("SELECT a FROM Foo a WHERE a.someId = :id") 
Map<Long, Foo> findAllBySomeId(Long id) 

Gibt es eine Möglichkeit, schreiben sie statt Liste zu bekommen HashMap.
Ich möchte den Schlüssel der Hashmap Schlüssel = SomeId und Wert als Foo.

habe ich versucht, wie diese

@Query("SELECT new map (a.someId, a) FROM Foo a WHERE a.someId = :id") 
Map<Long, Foo> findAllBySomeIdAsMap(Long id); 

aber es ergab zwei Elemente aber a.someId als Wert und Schlüssel als 0;

0=someId 
1=Foo 
+0

möglich duplicate von [wie Karte mit HQL zurückgegeben wird] (http://stackoverflow.com/questions/7876724/how-to-return-mapkey-value-with-hql) –

+0

Das kann wenig anders sein, wo es macht mit Annotation mit 1-Viele Beziehungen. Aber was ich brauche, ist die gleiche (innerhalb der einzelnen) Tabelle – Paul

+0

@Paul hast du den Weg gefunden, die hashmap dann zu bekommen? Ich muss das Gleiche tun. –

Antwort

2

Haben Sie sich this post angesehen?

Auch in diesem versuchen, Ihre suchen noch eine Liste:

@Query("SELECT new map (a.someId, a) FROM Foo a WHERE a.someId = :id") 
List<Foo> findAllBySomeIdAsMap(Long id); 

Haben Sie versucht, die Signatur zu ändern?

+0

Sorry, es war mein Tippfehler. Unterschrift ist Hashmap. Ich werde den Beitrag bearbeiten. Aber das Problem ist immer noch das gleiche – Paul

+0

OK. Hast du den Beitrag gelesen? Wenn ja, hat es in Ihrem Fall geholfen? – lgd

+0

danke für Ihre Antwort. Ich habe mir die Post angesehen. In der Post versucht die Abfrage zu überprüfen, das Ergebnis zurückzugeben, nur der Wert ist in der Karte vorhanden. Aber was ich brauche, ist eine Möglichkeit, "Spalte-1" anzugeben, ist Ihr Schlüssel und Wert ist die Entität für diese Tabelle – Paul

Verwandte Themen