휴지 상태 타임스탬프 - 밀리초 정밀도
타임 스탬프를 밀리초의 정밀도로 보존하는 것은, 휴지 상태에서는 이미 알고 있는 문제인 것 같습니다.처음에 db의 내 필드는 timestamp(3)로 설정되어 있었지만, datetime(3)도 시도해 보았습니다만, 유감스럽게도 차이가 없었습니다.
Timestamp와 Date 클래스를 사용해 보고, 최근에는 joda-time 라이브러리를 사용하기 시작했습니다.그 모든 노력에도 불구하고, 저는 여전히 밀리초의 정확도로 타임스탬프를 저장할 수 없었습니다.
클래스에 대한 매핑에는 다음 속성이 포함됩니다.
<property name="startTime" column="startTime" type="org.jadira.usertype.dateandtime.joda.PersistentDateTime" length="3" precision="3" />
커스텀 정의 사투리 클래스
public class MySQLQustomDialect extends MySQL5InnoDBDialect{
protected void registerColumnType(int code, String name) {
if (code == Types.TIMESTAMP) {
super.registerColumnType(code, "TIMESTAMP(3)");
} else {
super.registerColumnType(code, name);
}
}
}
db에 수동으로 데이터를 입력하면 hibernate가 서브세컨드 부분을 가져옵니다.
이 문제를 해결할 방법이 있나요?
혹시 MySQL Connector/JDBC 드라이버를 MariaDB 5.5와 함께 사용하고 계십니까?
Connector/J는 보통 서버가 충분히 새로운 것을 검출했을 경우에만 밀리초 부품을 서버에 송신하고, 이 검출에 의해 서버의 버전이 >= 5.6.4 인 것을 확인합니다.이것은 분명히 MariaDB 5.5.x에서는 올바르게 동작하지 않습니다.
Connector/J 소스의 관련 부분은 다음과 같습니다.
MariaDB의 자체 JDBC 드라이버(MariaDB Java Client)를 사용하면 도움이 될 수 있지만(시도하지 않았습니다), 연결 문자열에 useServerPrepStmts=true를 추가하면 Connector/J에서도 작동한다는 것을 우연히 알게 되었습니다.
언급URL : https://stackoverflow.com/questions/23142614/hibernate-timestamp-millisecond-precision
'programing' 카테고리의 다른 글
시퀀스 번호로 열 업데이트 mysql (0) | 2022.12.27 |
---|---|
라라벨:DB에서 마지막 N개 항목을 가져오는 방법 (0) | 2022.12.27 |
메서드를 array_map 함수로 사용할 수 있습니까? (0) | 2022.12.27 |
MySQL에서 400000부터 시작하는 새 열을 채우는 방법 (0) | 2022.12.27 |
템플릿의 Angular 2 해시태그는 무엇을 의미합니까? (0) | 2022.12.27 |