java - 处理hibernate查询结果

标签 java hibernate

我一直在关注本教程 here 本教程中的代码是:

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 。 异常(exception)是“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 的列表

关于java - 处理hibernate查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24090273/

相关文章:

java - 如何确保我的 arrayList 中嵌套私有(private)类的对象是我想要的?

java - 用于部署的 Maven、Java 和自定义文件

java - 向项目中 100 个不同位置调用的方法添加参数 - 正确的方法是什么?

javax.transaction.Transactional 与 org.springframework.transaction.annotation.Transactional

java - JPA EntityTransaction 的目的是什么

java - Spring + hibernate : could not initialize proxy no Session - What to do when an exception occured on a DAO?

mysql - 如何解决使用 hibernate 5 和 mysql 出现 HHH000346 错误?

java - 测试在 IDE 中通过,但在 TeamCity 中失败

java - REST 客户端抛出 sun.security.provider.certpath.SunCertPathBuilderException

c# - 为什么 NHibernate 抛出 "StaleObjectStateException"?