1

以下は私のコードです。user_group テーブルにクエリを実行し、リストで結果を取得しています。リストを繰り返したい。しかし、次のように例外を取得します。

    List<Group> list= empDAO.getStudentList();
    for(Group o :list){
        System.out.println("NAME :"+ o.getFirstName());
    }

これは私のDAOメソッドです

public List<Group> getStudentList() {
    System.out.println("INSIDE DAO");
    List<Group> groups = new ArrayList<Group>();

    List<Group> rows = jdbcTemplate.queryForList("select * from user_group");

    return rows;
}   

Group.class

public class Group {
    public Group() {
        // TODO Auto-generated constructor stub
    }

    private String firstName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
}

次の例外が発生しています

Aug 3, 2012 9:22:47 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet mvc-dispatcher threw exception
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.common.form.Group
        at com.common.controller.HelloWorldController.helloWorld(HelloWorldController.java:28)
        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.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:421)
        at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:136)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:326)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:313)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:619)

誰でもこのエラーを修正する方法を教えてもらえますか?

4

2 に答える 2

7

この行jdbcTemplate.queryForList("select * from user_group");は、グループ項目のリストではなく、HashMap のリストを返しています (IDE はおそらくその行に警告を表示しています)。

jdbcTemplate に関する Spring のドキュメントを読みたい場合や、RowMapperを使用して各行を Group オブジェクトに変換したい場合があります。

jdbcTemplate.query(String sql, RowMapper rm)また、ユースケースに合わせてメソッドを使用したいと思います。 javadocを確認してください。

于 2012-08-03T16:25:55.383 に答える
3

jdbcTemplate.queryForLista を返さないのでList<Group>、 a が何かわかりませんGroup。行のリストである を返しますList<Map<String,Object>>。各行は、列名からその値へのマップです。

だからこれをしてください:

for (Map<String,Object> m : jdbcTemplate.queryForList("select * from user_group")) {
    for (Map.Entry<String,Object> e : m.entrySet()) {
        String columnName = e.key;
        Object columnValue = e.value;
        ...build a Group somehow?...
    }
}
于 2012-08-03T16:28:33.897 に答える