2017-05-20 13 views
-2

私はjdbctemplateで作業しようとしています。 thisを読むと、コードList<Map> rows = getJdbcTemplate().queryForList(sql);を使用するパート2に到達しました。私のコードで実装しようとすると、eclipseはチュートリアルのようにMapの代わりにMap<String,Object>を使用するように強制します。Map <String、Object>を単純なマップのように使用する方法

私はjavaに新しいので、データベース列にアクセスする方法がわからない場合はMap<String,Object>です。

どうすればよいですか?

以下のコードは大丈夫ですか?以下は更新

List<Map<String,Object>> rows = getJdbcTemplate().queryForList(sql); 
    for (Map<String,Object> row : rows) { 
     Customer customer = new Customer(); 
     customer.setCustId((Long)(row.get("CUST_ID"))); 
     customer.setName((String)row.get("NAME")); 
     customer.setAge((Integer)row.get("AGE")); 
     customers.add(customer); 
    } 
    return customers; 

は私が

タイプ例外レポート

メッセージ要求処理が失敗し、このコードを取得するエラーです。ネストされた例外は java.lang.ClassCastExceptionがある:java.math.BigDecimalのは、サーバーがこの要求を満たすから を防ぐ内部エラーが発生しました

説明をjava.lang.Stringで にキャストすることはできません。

例外

org.springframework.web.util.NestedServletException:リクエスト 処理が失敗しました。ネストされた例外はjava.lang.ClassCastExceptionです。 java.math.BigDecimalはjava.lang.Stringにキャストできません。 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) org.springframework.web。 servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) のjavax .servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

根本原因

とjava.lang.ClassCastException:java.math.BigDecimalのは com.projet.testjdbc2.ArticleDAO.listerLesArticles(ArticleDAO.java:20) com.projet.testjdbc.HomeController.home2をjava.lang.Stringで にキャストすることはできません(HomeController.java:78) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース) sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) れるjava.lang.reflect。メソッド.invoke(不明なソース) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java :133) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java :827) org.springframework.web.servlet.mvc。method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:963) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web .servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpこれらのフィールドのいずれかがにBigDecimalであると考えていることは非常に難しいのServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

+3

これが優れているからです。このチュートリアルでは、生の型を使用します。長い時代遅れの悪い習慣。 – GhostCat

+0

このコードは正しく動作しますか? –

+0

@JavaGuynextdoorそれはそうではありません。 'BigDecimal'から' String'への変換エラーのようなものがあります。文字列や逆数として数字を使用しているかのように... – Bloomberg58

答えて

0

それ以外の場合はにキャストしないでください。Stringにキャストしないでください:BigDecimalにキャストしてください。明らかに。

MapMap<String, Object>とは関係ありません。

関連する問題