2010-06-02 7 views
2

스프링 jdbc 템플릿을 사용하여 일부 데이터를 데이터베이스에 삽입 할 때이 오류가 발생했습니다. 기본적으로는 개체에서 값을 가져옵니다과 배열에 스틱과 JDBC 템플릿의 방법을 삽입하는 해당 배열을 통과,Spring Jdbc 템플릿 + MySQL = TransientDataAccessResourceException : 잘못된 인수 값 : Java.io.notSerializationException

JdbcTemplate insert = new JdbcTemplate(dataSource); 
     for(ResultType result : response.getResultSet().getResult()) 
     { 
      Object[] args = new Object[] {result.getAddress(), result.getCity(), result.getState(), result.getPhone(), result.getLatitude(), result.getLongitude(),result.getRating().getAverageRating(), result.getRating().getAverageRating(), result.getRating().getTotalRatings(), result.getRating().getTotalReviews(), result.getRating().getLastReviewDate(), result.getRating().getLastReviewIntro(), result.getDistance(), result.getUrl(), result.getClickUrl(), result.getBusinessUrl(), result.getBusinessClickUrl()}; 
      insert.update("INSERT INTO data.carwashes (address, city, state, phone, lat, lng, rating, average_rating, total_ratings, total reviews, last_review_date, last_review_intro, distance, url, click_url, business_url, business_click_url, category_id, zipcode_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,96925724,78701)", args); 
     } 

아주 긴 코드 ..하지만 :

여기 내 코드입니다.

도움이 될 것입니다.

+0

http://forum.springsource.org/showthread.php?t=53267 – stacker

답변

4

내 생각 엔 당신의 인수 배열에있는 항목 중 하나가되지 JdbcTemplate에서 인식 할 수있는 유형 (즉, 그것은 String하는 Date 아니다, 등)이며, 따라서 그것은 문에 setObject()를 부르고 있다는 것입니다. 드라이버는 인수를 바이너리로 직렬화하려고 시도하고, 직렬화 가능하지 않음을 알게되고 예외를 throw합니다.

배열의 인수가 모두 사용자가 원하는 것이라고 생각하십시오. 예 : 자신의 클래스의 인스턴스가 아니어야하지만 표준 Java 유형이어야합니다.

+0

+1 : 나는 또한 이것을 믿습니다. Btw : for 루프에 데이터를 삽입하는 것은 그리 효율적이지 않습니다. 'JdbcTemplate'의'batchUpdate (sql, pss)'메소드를 고려해야합니다. – Espen

+0

감사합니다. Espen. 내가 할게. 이것은 모든 조각이 함께 맞는지 여부를 확인하기위한 테스트 실행과 같습니다. 나는이 해결책을 시도하고 볼 것이다. –