簡體   English   中英

處理休眠查詢結果

[英]Processing hibernate query result

我在這里一直關注本教程該教程中的代碼為:

private void displayResult(List resultList) {
Vector<String> tableHeaders = new Vector<String>();
Vector tableData = new Vector();
tableHeaders.add("ActorId"); 
tableHeaders.add("FirstName");
tableHeaders.add("LastName");
tableHeaders.add("LastUpdated");

for(Object o : resultList) {
    Actor actor = (Actor)o;
    Vector<Object> oneRow = new Vector<Object>();
    oneRow.add(actor.getActorId());
    oneRow.add(actor.getFirstName());
    oneRow.add(actor.getLastName());
    oneRow.add(actor.getLastUpdate());
    tableData.add(oneRow);
}
resultTable.setModel(new DefaultTableModel(tableData, tableHeaders));

}

我不明白為什么我無法在for循環中將我的Forfait Forfait轉換為(Forfait)o。 例外是“ java.lang.ClassCastException:無法將java.lang.String強制轉換為hibernate.util.Forfait”

謝謝你的幫助

public String[] getAllForfait() {
    String query = "SELECT distinct forfait.forfaitNom FROM Forfait forfait";
    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    Query q = session.createQuery(query);
    List resultList = q.list();
    session.getTransaction().commit();
    String[] Forfaits = {};
    int i = 0;
    for(Object o : resultList) {
        Forfait forfait = (Forfait)o;
        Forfaits[i] = forfait.getForfaitNom();
        i++;
    }
    return Forfaits;
}

您的查詢僅從表中選擇名稱(字符串?):

String query = "SELECT distinct forfait.forfaitNom FROM Forfait forfait";

您想要執行的操作將返回所有內容,因此請嘗試:

String query  "from Forfait" 

代替。 這將返回完整的對象/表,而不是僅返回其中的一列。

根據評論更新

如果您需要保持查詢不變,並且僅在查找名稱,則將for循環更改為以下內容:

for(Object o : resultList) {
    Forfaits[i] = (String)o;
    i++;
}

您僅在select語句中選擇名稱,因此resultList將是String的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM