我一直在关注本教程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中。 例外是&#34; java.lang.ClassCastException:java.lang.String无法强制转换为hibernate.util.Forfait&#34;
感谢您的帮助
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;
}
答案 0 :(得分:1)
您的查询只是从表中选择名称(字符串?):
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
的列表