, 나는 jadira usertypes 권장 사용하여 joda 시간을 DateTime 속성을 매핑하고 있습니다 :MySQL의 DATETIME 정밀도 (joda 시간, 최대 절전 모드, org.jadira.usertype, hbm2ddl을) 내 최대 절전 모드 - 4 개체에서
@Entity
@Table(name="timing")
public class TimingEntity {
...
@Basic(optional=false)
@Column(name="moment")
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
public DateTime getMoment() {
...
내 데이터베이스는 MySQL입니다.
CREATE TABLE `timing` (
...
`moment` DATETIME NOT NULL,
...
)
생성 된 CREATE TABLE
는 DATETIME 열을 포함하여 최대 절전 특성 hbm2ddl.auto
설정 값 create
에로, 나는 나의 timing
테이블에서 생성 된 다음 열이. MySQL의 DATETIME은 분수 부분이없는 초 단위의 정밀도를 가지고 있습니다. 분수 부분 (최대 마이크로 초)을 활성화하려면 MySQL 5.6.4 이상 enablesDATETIME(precision)
열 (예 : DATETIME(3)
)이 밀리 초 단위의 정밀도를 가져야합니다.
내 질문은 - hbm2ddl로 생성 된 시간 필드에 대한 정밀도를 지정하는 방법이 있습니까? 적어도 이것은 jadira 사용자 유형 또는 java.sql 또는 jdbc 드라이버 기계의 문제입니까?
P. DB 테이블을 원하는 열의 정밀도 (예 : DATETIME(3)
)로 수동으로 수정하면 모든 것이 정상적으로 작동합니다. joda DateTimes는 밀리 초 정밀도로 DB에서 쓰여지고 읽혀집니다.
트릭을 했어, 고마워! 'columnDefinition'이 효과가 있었고,'precision'은 작동하지 않았습니다. 그러나 단점은 내가 내 코드에서 mysql에 의존하기 시작한다는 것이다. –