Hibernate 문서에는 @Temporal
주석에 대한 아래 정보가 있습니다 .
일반 Java API에서는 시간의 시간 정밀도가 정의되지 않습니다. 시간 데이터를 다룰 때 데이터베이스에서 예상되는 정밀도를 설명 할 수 있습니다. 시간 데이터는 DATE, TIME 또는 TIMESTAMP 정밀도 (예 : 실제 날짜, 시간 만 또는 둘 다)를 가질 수 있습니다. @Temporal 주석을 사용하여 미세 조정하십시오.
무슨 temporal precision of time is not defined
뜻이야? temporal
데이터와 그 정밀도 는 무엇입니까 ? 어떻게 미세 조정합니까?
답변
이 주석은 영구 필드 또는 java.util.Date
및 유형의 속성에 지정되어야합니다 java.util.Calendar
. 이러한 유형의 필드 또는 속성에 대해서만 지정할 수 있습니다.
Temporal
주석은와 함께 사용될 수있는 Basic
주석의 Id
주석 또는 ElementCollection
주석 (요소 컬렉션 값은 시간적 형인 경우.
일반 Java API에서는 시간의 시간 정밀도가 정의되지 않습니다. 시간 데이터를 다룰 때 데이터베이스에서 예상되는 정밀도를 설명 할 수 있습니다. 시간 데이터는 DATE, TIME 또는 TIMESTAMP 정밀도 (즉, 실제 날짜, 시간 만 또는 둘 다)를 가질 수 있습니다. @Temporal
주석을 사용하여 미세 조정 하십시오 .
시간 데이터는 시간과 관련된 데이터입니다. 예를 들어, 콘텐츠 관리 시스템에서 기사의 작성 날짜와 마지막 업데이트 날짜는 시간 데이터입니다. 어떤 경우에는 임시 데이터에 정밀도가 필요하며 정확한 날짜 / 시간 또는 둘 다 ( TIMESTAMP
)를 데이터베이스 테이블 에 저장하려고 합니다.
시간 정밀도는 핵심 Java API에 지정되지 않습니다. 타임 스탬프와 사이를 앞뒤로 변환 @Temporal
하는 JPA
주석입니다 java.util.Date
. 또한 time-stamp
시간으로 변환 됩니다. 예를 들어 아래 스 니펫 @Temporal(TemporalType.DATE)
에서 시간 값을 삭제하고 날짜 만 유지합니다 .
@Temporal(TemporalType.DATE)
private java.util.Date creationDate;
javadocs에 따라
쿼리 메서드 매개 변수에 적절한 {@code TemporalType}을 선언하는 주석입니다. 이 주석은 기본값이있는 {@link Date} 유형의 매개 변수에만 사용할 수 있습니다.
TemporalType.DATE
[다양한 출처에서 수집 한 위 정보]
답변
@Temporal
다음 열 항목의 데이터베이스 테이블에 저장하는 데 사용할 수있는 JPA 주석입니다.
- DATE (
java.sql.Date
) - 시간 (
java.sql.Time
) - 타임 스탬프 (
java.sql.Timestamp
)
일반적으로 Date
클래스에서 필드를 선언하고 저장하려고 할 때. 데이터베이스에 TIMESTAMP 로
저장됩니다 .
@Temporal
private Date joinedDate;
위의 코드는 08-07-17 04 : 33 : 35.870000000 PM 과 같은 값을 저장합니다 .
DATE 만 데이터베이스에 저장
하려면 사용 / 정의 할 수 있습니다 TemporalType
.
@Temporal(TemporalType.DATE)
private Date joinedDate;
이번에 는 데이터베이스에 08-07-17 을 저장 합니다.
@Temporal
요구 사항에 따라 사용할 수있는 다른 속성도 있습니다 .
답변
임시 유형은 영구 상태 매핑에 사용할 수있는 시간 기반 유형의 집합입니다.
지원 시간적 유형의 목록이 포함하는 세 java.sql
종류 java.sql.Date
, java.sql.Time
및 java.sql.Timestamp
, 그것을 포함하는 두 java.util
유형 java.util.Date
과 java.util.Calendar
.
java.sql
유형은 완전히 번거 로움 – 무료입니다. 다른 단순 매핑 유형과 동일하게 작동하며 특별한 고려 사항이 필요하지 않습니다.
그러나 두 java.util
유형 java.sql
에는 JDBC 드라이버와 통신 할 때 사용할 JDBC 유형을 나타 내기 위해 추가 메타 데이터가 필요 합니다. 이것은 주석으로 주석을 달고 @Temporal
JDBC 유형을 TemporalType
열거 유형 의 값으로 지정하여 수행됩니다 .
각 java.sql
유형 을 나타내는 DATE, TIME 및 TIMESTAMP의 세 가지 열거 값이 있습니다.
답변
이것을 사용하십시오
@Temporal(TemporalType.TIMESTAMP)
@Column(name="create_date")
private Calendar createDate;
public Calendar getCreateDate() {
return createDate;
}
public void setCreateDate(Calendar createDate) {
this.createDate = createDate;
}
답변
짧은 답변을 찾고 있다면 :
java.util.Date를 사용하는 경우 Java는 SQL 유형과 직접 관련되는 방법을 실제로 알지 못합니다. 이것이 작용할 때 @Temporal
입니다. 원하는 SQL 유형을 지정하는 데 사용됩니다.
출처 : Baeldung
답변
저는 Hibernate 5.2를 사용 @Temporal
하며 더 이상 필요하지 않습니다.
java.util.date , sql.date , time.LocalDate 는 Date / timestamp와 같은 적절한 데이터 유형으로 DB에 저장됩니다.
답변
@Temporal 어노테이션을 사용하여 데이터베이스 테이블에 날짜, 시간 또는 둘 다를 삽입하고 TemporalType을 사용하여 데이터, 시간 또는 둘 다 int 테이블을 삽입 할 수 있습니다.
@Temporal(TemporalType.DATE) // insert date
@Temporal(TemporalType.TIME) // insert time
@Temporal(TemporalType.TIMESTAMP) // insert both time and date.