programing

Java 날짜 최대 절전 모드 종료 시간

elecom 2023. 7. 27. 21:38
반응형

Java 날짜 최대 절전 모드 종료 시간

Oracle DB에 Date type 열이 있는데 날짜와 시간이 확실히 포함되어 있습니다.하지만 제가 자바 애플리케이션에서 데이터를 가져오려고 하면 실시간이 아닌 0으로 된 묶음으로 날짜를 반환합니다.코드에서는 다음과 같습니다.

SQLQuery sqlQuery = session.createSQLQuery("SELECT table.id, table.date FROM table");
List<Object[]> resultArray = sqlQuery.list();
Date date = (Date)resultArray[1];

DB에서 26-2-2010 17:59:16이었다면 26-2-2010 00:00:00 시간 내에 어떻게 해야 합니까?

다른 사람들이 이미 말했듯이, 당신은 다음을 사용해야 합니다.java.sql.Timestamp시간을 벌기 위해.

하지만, 만약 당신이 그것을 사용한다면.@Temporal(TemporalType.TIMESTAMP)Oracle의 DATE 열에 주석을 달면 Hibernate가 불만을 제기하고 스키마 유효성 검사 오류를 발생시킵니다.이러한 문제를 방지하려면 다음을 추가합니다.columnDefinition다음과 같이:

@Temporal(TemporalType.TIMESTAMP)
@Column(name="EVENTTIME", columnDefinition="DATE")
private Date eventTime;

Oracle에 대한 전문가는 아니지만, 고객이 필요로 할 수 있는DateTime타임스탬프를 가져올 열 유형입니다.

그것과 함께 당신은 사용해야 합니다.java.sql.TimestampJDBC 유형.

저도 같은 문제가 있었습니다(데이터베이스의 Oracle Date 유형).

다음 매핑은 저에게 적합합니다.

<property name="timeStamp" type="java.util.Date">
    <column name="TIME_STAMP"/>
</property>

저도 과거에 이 문제에 직면한 적이 있습니다.이 문제를 해결하려면 다음에서 최대 절전 모드 매핑을 변경합니다.

<property name="timeStamp" type="java.util.Date">
    <column name="TIME_STAMP"/>
</property>

로.

<property name="timeStamp" type="timestamp">
    <column name="TIME_STAMP"/>
</property>

Hibernate 개체의 데이터 유형을 java.util로 유지할 수 있습니다.날짜.

네, 또한 잘 작동합니다. 3.3, ojdbc6.jar를 사용하고 주석에서 아래와 같이 날짜를 타임스탬프로 변경합니다.

@Id
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "TDATE", length = 7)
public Date getTdate() {
    return this.tdate;
}

public void setTdate(Date tdate) {
    this.tdate = tdate;
}

사용해 보십시오.

session.createSQLQuery("SELECT table.id as i, table.date as d FROM table")
  .addScalar("i", Hibernate.LONG)  // Or whatever type id is
  .addScalar("d", Hibernate.TIMESTAMP);

혹시 이런 문제가 있나요?최신 JDBC 드라이버가 있는지 확인하십시오. 파일 이름은 ojdbc5.jar여야 합니다.

저는 최근에 같은 문제에 빠졌습니다.제 접근법은 이렇습니다...

따라서 이 경우 QueryImplementation 클래스에서 for 루프를 정의하여 데이터베이스 테이블의 모든 열의 유형을 확인합니다.열 이름이 DATE 유형이면 쿼리 작성기에 addScalar("columnName", 새 타임스탬프 유형()을 추가합니다.이러한 방식으로 날짜 유형 열은 Java 응용프로그램에 타임스탬프를 표시합니다.

아래 샘플 코드를 확인하십시오.

 SQLQuery hibernateQuery = getSession().createSQLQuery(sqlQuery);

        Set<String> columns = columnDataTypes.keySet();
   for (String column : columns) {
       if (columnDataTypes.get(column).equals(SqlType.DATE.name())) {
           hibernateQuery.addScalar(column, new TimestampType());
       } else {
           hibernateQuery.addScalar(column);
       }
   }

이게 도움이 되길 바랍니다.

라케시.

조금 늦었을 수도 있지만, 저의 경우 해결책은 @Temporal(TemporalType)을 추가하는 것이었습니다.날짜 필드로 이동합니다.

@Temporal(TemporalType.DATE)
private Date date;

그리고 우리가 찾은 또 다른 해결책은 (첫 번째 해결책이 작동하지 않았을 때) 최대 절전 모드를 명시적으로 알려주는 것이었습니다.

@Type(type = "date")
private Date date;

언급URL : https://stackoverflow.com/questions/2343339/java-date-hibernate-cut-off-time

반응형