2016-09-09 3 views
1

음, 내 바보 같은 질문입니다.JSR-310 연도가 MySQL의 TINYBLOB에 매핑되었습니다.

Year 열은 직관적 인 int 열 대신에 tinyblob에 매핑됩니다 (Hibernate 5.1 (5.2 동일)). 다른 JSR-310 열이 성공적으로 매핑되었습니다.

예.

@Column(name = "ANNO_PROTOCOLLO", nullable = true) 
protected Year annoProtocollo; 

@Column(name = "CREATED", nullable = false, updatable = false, insertable = true) 
protected LocalDateTime created = LocalDateTime.now(); 

첫 번째 열 tinyblob 매핑되지만 번째 올바르게 같은 값에 대한 SQL 표준이다 datetime 매핑된다.

다시 내 질문은 그 년 열을 int로 선언 할 수 없기 때문에 바보입니다. 그러나 이것의 원인을 이해하고 싶습니다. 코드 3 줄 미만이 걸린다면을 매핑하십시오. int에서 년. 나는 여러 데이터베이스에 작업을해야하기 때문에, 나는 @Column(columnDefinition)을 받아 들일 수없고, 그 유일한 해결책 인 경우 그냥 정수를 사용하고 내가

+1

JDBC는 LocalDate, LocalDateTime, LocalTime, OffsetDateTime 및 OffsetTime에 대한 데이터 유형 매핑을 정의합니다. 'Year'유형은 그런 유형이 아닙니다 (SQL 표준에는 해당 유형이 없습니다). –

+0

고마워요 @ MarkRotteveel, 귀하의 의견은 상황을 분명히 지적합니다. 이제, 추측의 관점에서, 당신은 ** 개인적으로 ** int가 올바른 매핑 일 수 있다는 것에 동의합니까? 단지 토론 목적으로, 내 열을 Integer asap로 수정하려고합니다. –

+0

@MarkRotteveel Java 9에 있나요? JDBC 4.2 (Java 8)에서는 새로운'java.time' 클래스에 대한 매핑을 정의하지 않기 때문에 제가 찾을 수있는 한 멀리 있습니다. – Andreas

답변

2

간단한 이유는 그들이 제공하지 않았다 전에 그랬던 것처럼, 그와 함께 살고 Year에 대한 특정 매핑이므로 바이트와의 객체 직렬화, 즉 BLOB의 기본 매핑이 생성됩니다.

사용자 지정 유형을 구현하여 매핑을 제공 할 수 있습니다.
Hibernate Domain Model Mapping Guide - Custom BasicTypes을 참조하십시오.

관련 문제