2015-05-23 20 views
0

我正在寫與數據庫的程序。java.util.List的元素串的Java

我正在查詢數據庫以使用org.hibernate.Query對象從中獲取一個項目。

我需要這個項目的內容設置爲JTextField組件的價值。

的問題是,我不知道如何將java.util.List項目轉換爲一個String我可以在setText(getCodeOfSub(String nameOfTheSubj))方法使用:

public String getCodeOfSub(String nameOfTheSubj){ 

    Session session = Service.getSession(); 
    org.hibernate.Query query = session.createQuery("SELECT subject.subjectCode, subject.name " + 
     "FROM SubjectEntity subject WHERE subject.name="+"'" 
     +nameOfTheSubj+"'"); 

    java.util.List results = query.list(); 

    if(!results.isEmpty()) { 
    return String.valueOf(results.get(0)); 
    } 
    session.close(); 
    return null; 
} 
+0

A 「'java.util.List'項目」 僅僅是一個'Object'。您可以使用'toString()'方法:'返回results.get(0).toString()'。如果顯示不滿意,請調查對象'results.get(0)'的類型以從中獲取信息。 –

+0

結果應該是什麼樣的'String'? 'results.toString()'罰款嗎? – Bubletan

+0

'[Ljava.lang.Object; @ 2a1504f3'這是'results.get(0)的ToString()'metohod的結果... – Lemmy

回答

2

調用org.hibernate.Query#list時,你會得到什麼是List<Object[]>這意味着行的列表,其中每一行將持有的對象表示,但你的情況下,將兩個項目作爲subject.codesubject.name的數組。

所以在本質上,results.get(0)將返回Object[]其中:

  • results.get(0)[0] - 調用時>subject.name

所以 - >subject.code

  • results.get(0)[1]String.valueOf(results.get(0)),您將嘗試獲取對象數組的字符串表示ts,這不會是你所期待的......不同的項目以某種方式分開,但將是一個原始數組,然後是哈希表示。

    什麼是使用的項目toString方法是使用靜態實用Arrays.asList(Object[]),即拿出你的項目表示最簡單的方法:

    //... 
    return String.valueOf(Arrays.asList(results.get(0))); 
    //... 
    

    這兒什麼是陳述有關的的toString方法集合:

    返回指定的 數組內容的字符串表示形式。字符串表示由數組的 元素的列表組成,方括號(「[]」)。相鄰元素是 ,由字符「,」(逗號後跟空格)分隔。 這些元素通過String.valueOf(INT)轉換爲字符串。如果a爲null,則返回 「null」。

    爲了更好地表達您的項目,您可能需要使用某種實用方法手動處理它們...我會建議Joiner from google-collections library

  • +0

    謝謝!這工作! – Lemmy

    +0

    歡迎您:) – tmarwen