2014-09-05 4 views
1

Spring MVC와 Hibernate를 사용하여 응용 프로그램을 빌드하는 방법을 배우려고합니다. 현재 MySQL 데이터베이스에 체크 박스 값을 삽입하는 데 어려움을 겪고 있습니다. Spring MVC에서 데이터베이스에 체크 박스 값 삽입하기

내 데이터베이스 테이블 구조

은 같다 다음

근본 원인

은 java.sql.SQLException : 내 양식을 채우고 난이 오류 메시지가 제출 명중

id name interest 

: 잘못된 문자열 값 : 1 행의 'interest'열에 대해 '\ xAC \ xED \ x00 \ x05ur ...'com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1084) com.mysql.jdbc. MysqlIO.checkErrorPacket (Mys

id name interest 
1 Steve PHP 
2 Steve Java 
3 Wuagh C# 
4 Wuagh PHP 

가 어떻게이를 말해 주 시겠어요 : 삽입 한 후에는 다음과 같아야 qlIO.java:4232)

나는 나의 테이블에 값을 삽입하려고? 그리고 가능하다면 어떻게하면 이것을 달성 할 수 있을까요?

id name interest 
1 Steve PHP, Java 
2 Wuagh C#, PHP 

아래에 내 코드를 참조하십시오

내 양식 :

<c:url var="action" value="/register" ></c:url> 
<form:form action="${action}" modelAttribute="subscriber" method="POST" > 

    <div> 
    <label>Name</label> 
    <form:input path="name"/> 
    <form:errors path="name" cssClass="error"/> 
    </div> 

    <div> 
    <label>Interests</label> 
    <form:checkboxes path="interest" items="${records.interests}"/>  
    </div> 

    <input type="submit" value="Submit"> 
</form:form> 

컨트롤러 :

package com.spring.org; 
@Controller 
public class HomeController { 

@Autowired 
private SubscriberService subService; 

@RequestMapping(value="/register", method= RequestMethod.GET) 
public ModelAndView RegistrationForm(@ModelAttribute Subscriber subscriber, BindingResult result) 
{ 

    HashMap<Integer, String> interest = new HashMap<Integer, String>(); 

    interest.put(1,"Java"); 
    interest.put(2,"PHP"); 
    interest.put(3, "C#"); 
    return new ModelAndView("regForm", "records", interest); 
} 


@RequestMapping(value="/register", method= RequestMethod.POST) 
public ModelAndView RegistrationFormSubmit(@ModelAttribute("subscriber") @Valid Subscriber subscriber, BindingResult result) 
{ 
    if (result.hasErrors()) { 

     return new ModelAndView("regForm"); 
    } 
    else 
    { 
     subService.addSubscriber(subscriber); 
     return new ModelAndView("redirect:/showList"); 
    } 
} 

} 

모델 - 가입자

@Entity 
@Table(name = "PERSON", schema = "java2") 
public class Subscriber { 

    @Id 
    @Column(name="ID") 
    @GeneratedValue 
    private int id; 

    @NotEmpty(message = "Please enter your Name.") 
    private String name; 
    private String[] interest; 

public String getName() {return name;} 
public void setName(String name) { this.name = name; } 
public String[] getInterest() { return interest; } 
public void setInterest(String[] interest) { this.interest = interest; } 

} 
,363,210

SubscribeService 구현 :

@Service 
public class SubscriberServiceImpl implements SubscriberService{ 

@Autowired 
private SubscriberDao subsDao ; 

@Override 
public void addSubscriber(Subscriber subscriber) { 

    subsDao.addSubscriber(subscriber); 

} 
} 

SubscriberDao 구현 :

@Repository 
public class SubscriberDaoImpl implements SubscriberDao { 


@Autowired 
private SessionFactory sessionFactory ; 

public SessionFactory getSessionFactory() { 
    return sessionFactory; 
} 

public void setSessionFactory(SessionFactory sessionFactory) { 
    this.sessionFactory = sessionFactory; 
} 

@Override 
public void addSubscriber(Subscriber subscriber) { 

    getSessionFactory().openSession().save(subscriber);  

} 
} 

답변

0

This 링크 documentation뿐만 아니라, 당신에게 몇 가지 도움이 될 것입니다.

양식이 초기 유형이 아닌 문자열로 값을 반환하는 것은 데이터 바인딩 문제입니다.

관련 문제