十、java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to xxx.action.entity.Category

來源:互聯網
上載者:User
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to xxx.action.entity.Categoryat chentailei.action.test.SSH_CategoryDao.findByParentId(SSH_CategoryDao.java:61)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

原因:

介面輸出標籤如:${categorys.name},需要的是:List<Category>,而HIbernate回呼函數返回的是Object[],兩者予盾。

解決:

1.將輸出類型List<Category>,變更為:List<Object[]>,變更頁面輸出${categorys[1]},詳細對比數組元素的位置;

2.將回呼函數返回的Object[],強轉為:List<Object[]>(不能強轉為 List<Category>,因為SQL語句是多表串連查詢,執行後會報上述錯誤),然後再遍曆,通過Category對象賦值(即將 Object[]的元素值賦予Category屬性),再添加至List<Category>,轉碼如下:

//執行回調對象,擷取結果集List<Object[]> list = (List)this.getHibernateTemplate().execute(action);//轉換List<Category> prolist = new ArrayList<Category>();for(int i=0; i<list.size(); i++){ Object[] obs=list.get(i); Category cate = new Category(); cate.setId((Integer)obs[0]); cate.setTurn((Integer)obs[1]); cate.setName((String)obs[2]); cate.setEnName((String)obs[3]); cate.setDescription((String)obs[4]); cate.setParentId((Integer)obs[5]); cate.setPnum((BigInteger)obs[6]); prolist.add(cate);}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.