2016-05-09 4 views
-2

Ich habe die folgende Klasse als Abrufen den ersten Eintrag aus der Liste und deren Umwandlung in int

public class BrokerInvoiceLineItem { 


    private int attachmentCount; 

public int getAttachmentCount() { 
     return attachmentCount; 
    } 

    public void setAttachmentCount(int attachmentCount) { 
     this.attachmentCount = attachmentCount; 
    } 
} 

die benannte Abfrage in XML unter

gezeigt ist

<sql-query name="attachmentQuery"> 
    <![CDATA[select count(iilnmp.INV_LINE_NOTE_ID) from IOA_INV_LINE_NOTE_MAP iilnmp , 
               IOA_INVOICE_LINE_NOTES iiln , IOA_INVOICE_LINE iil 
               where iilnmp.INV_LINE_NOTE_ID = iiln.ID and iiln.INLI_ID =iil.id and iil.ID = ?]]> 
</sql-query> 

unten jetzt ist die Operation, die ich bin wo, wo aus einer Liste bei Index 0 ich den Wert abrufen, aber ich bekomme einen Kompilierungsfehler, wie ich den Wert in Index 0 in Int-Typ umgewandelt werden muss, dann nur ich kann setzen bitte beraten, wie kann ich erreichen das gleiche

Query query = session.getNamedQuery("attachmentQuery"); 
       query.setParameter(0, itrBrokerInvoiceLineItem.getId()); 
       List attachCount = query.list(); 
       if (attachCount != null && attachCount.size() > 0) { 
        if (attachCount.get(0) != null) { 
         itrBrokerInvoiceLineItem.setAttachmentCount(attachCount.get(0)); 
        } 
       } 

die Übersetzungsfehler, die ich bekommen habe ist The method setAttachmentCount(int) in the type BrokerInvoiceLineItem is not applicable for the arguments (Object)

ich meine Frage bearbeitet haben Sie, wie ich bin mit Hibernate 3.1, in dem query.getsingleresult Methode ist nicht da bitte

+0

Wo genau Ersetzen verwenden ändern ist der Fehler? Was ist der Stack-Trace? – Idos

+0

Wie sieht die benannte Abfrage aus? –

+0

Sie haben eine 'Liste' im Raw-Typ erstellt (Typ 'Objekt') und versuchen, einen Wert davon im 'int'-Typ zu speichern. Das ist nicht erlaubt. Ich weiß nicht, welche Werte 'Query.list()' zurückgibt, aber versuche, deine Liste mit den Diamantoperatoren zu deklarieren ('List '). – Lefteris008

Antwort

0

beraten Wenn ich verstehe Ihre Frage Sie wollen 1. Ergebnis nach dem Ausführen Ihrer Abfrage. Also, ich bevorzuge es, Sie verwenden mit der Behandlung Ausnahme statt query.list(). Welches wird Object zurückgeben.


(After Edit) scheint es, dass Sie auf einige Parameter basierend zählen möchten. So will ich Sie lieber in Namensabfrage mit diesem

<sql-query name="attachmentQuery"> 
    <![CDATA[select * from IOA_INV_LINE_NOTE_MAP iilnmp , 
               IOA_INVOICE_LINE_NOTES iiln , IOA_INVOICE_LINE iil 
               where iilnmp.INV_LINE_NOTE_ID = iiln.ID and iiln.INLI_ID =iil.id and iil.ID = ?]]> 
</sql-query> 

Und dann query.list().getSize() die int kehrt

1

List attachCount = query.list(); 

Mit diesem

List<Integer> attachCount = (List<Integer>) query.list(); 
+0

Sie können keinen Basistyp in Diamantoperatoren verwenden. Verwenden Sie stattdessen den Typ "Ganzzahl". – Lefteris008

+0

ya das war der Fehler –

Verwandte Themen