2012-10-19 2 views
0

스프링 기본 리포지토리를 사용하여 개체를 유지하려고 할 때 왜 어떤 것이 작동하지 않는지 파악하는 데 문제가 있습니다. 난 내 지속성 레이어 및 봄 MVC 프레임 워크로 최대 절전 모드를 사용하고 있습니다. JPA 대신 하이버 네이트 매핑 파일을 사용합니다.SQL 오류 : 1366 잘못된 정수 값 Spring MVC 최대 절전 모드

내가보고하고 오류는 다음

WARN : org.hibernate.util.JDBCExceptionReporter - SQL Error: 1366, SQLState: HY000 
ERROR: org.hibernate.util.JDBCExceptionReporter - Incorrect integer value: '\xAC\xED\x00\x05sr\x00!com.kwhours.butternut.domain.Type\xCF;\xBF\xEF\x8A\x82\x87\xF1\x02\x00\x0DZ\x00\x06isLeafI\x00\x05levelL\' for column 'type_id' at row 1 

내가 JPA는 그 코드의 관련 부분을 주석 도메인 객체를 유지하기 위해 시도하고 있습니다 :

@Entity 
@Table(name = "question") 
public class Question implements java.io.Serializable { 
    private Type type; 

    @Column(name = "type_id") 
    public Type getType() { 
     return this.type; 
    } 

    public void setType(Type type) { 
     this.type = type; 
    } 
} 

나는 외국인이 key 제약 조건을 question.type_id 열에서 type.id 열로 올바르게 설정합니다. 내 개체를 모두 코드에 올바르게 표시하도록 할 수는 있지만 다음 저장소에서 개체를 유지하려고하면 앞에서 언급 한 오류가 발생합니다.

public interface QuestionRepository extends CrudRepository<Question, Long> { 
    public List<Question> findByDatasetInstanceId(Long datasetInstanceId); 
} 

분명해야합니다. 새로운 질문 객체를 만들고 저장소를 사용하여 db에서 유형 객체를 검색 할 수 있습니다. 이 새로운 유형의 객체에 questions.type을 설정할 수는 있지만 위의 저장소를 사용하여 해당 유형을 포함하는 질문을 지속하려고 시도 할 때마다 그 오류가 발생합니다. 디버거에서 유형 객체를 체크 아웃하고 거기에 아무런 문제가없는 것 같습니다. 모든 단서 또는 제안이 도움이됩니다. 어떤 종류의 이스케이프 문자 시퀀스처럼 보이지만 실제로는 잘 모르겠습니다.

+0

http://stackoverflow.com을 삽입하는 삽입 아니라 tryign하는 유형 ID를 복용하지 않은/question/2762416/can not-insert-non-latin-symbols-in-mysql – invariant

+0

데이터베이스에 Java Long 및 Bigint (20) 형식의 객체 ID를 삽입하려고합니다. 여기에 잘못 인코딩 된 문자열이없고 그 id는 데이터베이스 자동 증가로 인해 생성되므로 mysql이 읽을 수없는 인코딩으로 ids를 생성하는 것은 의심 스럽습니다. – flips

+0

또한'Type' 클래스를 게시하십시오. –

답변

1

그래서 나는 이것에 대해 정말로 바보입니다. 나는 적절한 주석을 잃었하고 어떻게 든이 자바 객체

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "type_id") 
public Type getType() { 
    return this.type; 
} 
코드는 위의 문제를 해결

+0

그건 내가 생각했던거야. 나는'Type' 엔티티가 적절하게 거절되면 또한 동작 할 것이라고 생각합니다. 그래서 나는 그것을보고 싶었다 ;-) –