Java 发生类强制转换异常
我得到了一个ClassCastException,我不知道为什么。这是我的代码:Java 发生类强制转换异常,java,spring,hibernate,Java,Spring,Hibernate,我得到了一个ClassCastException,我不知道为什么。这是我的代码: public class RestLocationService { public static void main(String[] args) { getAllRestDetails(); } public static List<RestLocation> getAllRestDetails() { SessionFactory ses
public class RestLocationService {
public static void main(String[] args) {
getAllRestDetails();
}
public static List<RestLocation> getAllRestDetails() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.getCurrentSession();
List<RestLocation> restDetails = new ArrayList<RestLocation>();
Transaction tx = null;
try {
tx = session.beginTransaction();
Query query = session.createQuery(" from RestLocation ");
@SuppressWarnings("unchecked")
List<Object[]> list = query.list();
for (Object[] arr : list) {
System.out.print(Integer.parseInt((String) arr[0]));
System.out.println("\t" + arr[1].toString());
System.out.println("\t" + arr[2].toString());
System.out.println("\t" + arr[3].toString());
System.out.println("\t" + arr[4].toString());
System.out.println("\t" + arr[5].toString());
System.out.println("\t" + arr[6].toString());
System.out.println("\t" + arr[7].toString());
System.out.println("\t" + arr[8].toString());
System.out.println("\t" + arr[9].toString());
System.out.println("\t" + arr[10].toString());
System.out.println("\t" + arr[11].toString());
System.out.println("\t" + arr[12].toString());
RestLocation details = new RestLocation();
details.setRestId(Integer.parseInt((String) arr[0]));
details.setGeoX(arr[1].toString());
details.setGeoY(arr[2].toString());
details.setAddress1(arr[3].toString());
details.setAddress2(arr[4].toString());
details.setAddress3(arr[5].toString());
details.setArea(arr[6].toString());
details.setTown(arr[7].toString());
details.setPostcode(arr[8].toString());
details.setState(arr[9].toString());
details.setCountry(arr[10].toString());
details.setLandmark(arr[11].toString());
details.setSmartCode(arr[12].toString());
restDetails.add(details);
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
sessionFactory.close();
}
return restDetails;
}
}
查询将返回RestLocation对象的列表。您正在将结果分配给Object[]对象的列表。当您尝试迭代列表时,每个元素都被强制转换为对象[],因此是ClassCastException 将代码更改为
List<RestLocation> list = query.list();
for (RestLocation location: list) {
//access RestLocation properties
}
List List=query.List();
用于(RestLocation:列表){
//访问RestLocation属性
}
关于Stacktrace,您不了解什么?你能创造出什么样的条件来重现问题?您是否尝试过调试代码以查看错误发生时发生的情况?谢谢ekem chitsiga
List<RestLocation> list = query.list();
for (RestLocation location: list) {
//access RestLocation properties
}