2013-05-02 3 views
5

Wenn ich die folgende Abfrage habe, wird es mir eine Produktliste geben.Was ist der Objekttyp, der in einer Verknüpfung einer Hibernate-Abfrage zurückgegeben wird

List<Product>= 

getCurrentSession().createQuery("SELECT p FROM Product p ").list(); 

Was wird es zurückgeben, wenn es eine Verbindung wie folgt gibt.

getCurrentSession().createQuery("SELECT p FROM Product p inner join ProductCategory pc where p.id=pc.id").list(); 
+1

Sie erhalten die Liste . – prasanth

+2

Warum versuchst du es nicht selbst und siehst, was es zurückgibt? Ist das wirklich so schwierig? – SudoRahul

Antwort

3

SELECT p FROM Product p inner join ... etwas zu werfen haben in wie, dass Sie eine Liste der Product s gibt.

FROM Product p inner join ... so etwas gibt Ihnen eine Liste von Arrays.

+0

Kannst du mir bitte sagen, was der Grund dafür ist? –

+1

Beide sind Tabellen beitreten, aber der erste explizit angibt, nur Produkt zurückzugeben. –

1

Dies wird eine list von Objekten zurückgeben. Sie werden sie zu Product

List list = session.createQuery("SELECT p FROM Product p inner 
         join ProductCategory pc where p.id=pc.id").list(); 
0

Gemäß der Dokumentation für javax.persistence.Query erhalten Sie eine Liste zurück. Warum solltest du denken, dass es anders sein sollte?

2

Es sollte List<Object[]> als Ergebnis zurückgeben. Bitte beachten Sie this Faden

Und Sie sollten Ihre Entitäten zugreifen wie

for (Object[]> result : query.list()) { 
    Product p = (Product) result[0]; 
    ProductCategory pc = (ProductCategory) result[1]; 
} 
0

Diese Klasse Gießen von java.lang.Object Klasse zu modellieren nicht in jeder Hinsicht funktioniert. Unten ist mein Code.

List<Contactinfo> listStudentInfo = new ArrayList<Contactinfo>();      
         //listStudentInfo = dataService.getAllStudent(studentInfo); 
         listStudentInfo = dataService.getStudentInfo(); 
         System.out.println(listStudentInfo.size()); 
         Contactinfo contactinfo = (Contactinfo)listStudentInfo.get(0); 

Aber in Hibernate, brauchen Sie nicht beitreten, wenn Sie beide Entity mit Many-to-one von @ zugeordnet haben oder @ One-to-one Anmerkung beizutreten. Dann müssen Sie nur ein Objekt auswählen, Sie erhalten automatisch Zugriff auf andere Objekte über den Join. Stellen Sie sicher, dass Sie die Methode getter(), setter() für das beitretende Feld beibehalten. Ich hoffe, dies wird die Situation klären.

Verwandte Themen