Java 发生类强制转换异常

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

我得到了一个ClassCastException,我不知道为什么。这是我的代码:

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
 }