Oracle Временная метка / проблема отображения даты в спящем режиме - PullRequest
1 голос
/ 30 января 2020

Получение проблем при отображении моей таблицы. Я использую Oracle DB, моя таблица - >> test_time использует 2 столбца (изначально я хотел сохранить только дату, поэтому использовал дату, но не работал), используя тип отметки времени в таблице. Ниже мой класс Model, я пробовал java. sql .Date класс, когда я использовал тип Date в oracle, он не работал. Сейчас я использую класс java .util.Date, так как я использую метку времени в Oracle, он все еще не работает. Не в состоянии понять, что я должен делать, чтобы это работало.



import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

@Entity
@Table(name = "test_time ")
public class TestTime 
{


    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="CUST_SEQ1")
    @SequenceGenerator(sequenceName = "edu_id", allocationSize = 1, name = "CUST_SEQ1")
    private int edu_id;


    @JsonSerialize(as = Date.class)
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    @Temporal(TemporalType.DATE)
    private Date batch_start_year;

    @JsonSerialize(as = Date.class)
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    @Temporal(TemporalType.DATE)
    private Date batch_end_year;


    public int getEdu_id() {
        return edu_id;
    }

    public void setEdu_id(int edu_id) {
        this.edu_id = edu_id;
    }

    public Date getBatch_start_year() {
        return batch_start_year;
    }

    public void setBatch_start_year(Date batch_start_year) 
    {
        this.batch_start_year = batch_start_year;
    }

    public Date getBatch_end_year() {
        return batch_end_year;
    }

    public void setBatch_end_year(Date batch_end_year) {
        this.batch_end_year = batch_end_year;
    }

}

Я добавил данные в таблицу, чтобы проверить метод get для этого. Ничего не вставляй и не получай из таблицы.

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Мои startDate и endDate в БД имеют тип данных Timestamp и аналогично в моем классе Model. На самом деле не нужно использовать разные библиотеки. Для меня это работало с классом java. sql .Timestamp (так как я использую jar Oracle7 для oracle 12 c), вы можете использовать время joda или java .util.Date также на основе ваши требования. Для меня это не показало изменения в базе данных, потому что я не зафиксировал свои изменения. ТАК я добавляю session.flu sh (); Вы можете добавить commit () / flu sh () или добавить свойство hibernate.

Класс модели


import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

@Entity
@Table(name = "test_time ")
public class TestTime 
{


    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="CUST_SEQ1")
    @SequenceGenerator(sequenceName = "edu_id", allocationSize = 1, name = "CUST_SEQ1")
    private int edu_id;


  @JsonSerialize(as = Timestamp.class)
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern = "dd-MMM-yyyy")
    private Timestampbatch_start_year;

    @JsonSerialize(as = Timestamp.class)
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern = "dd-MMM-yyyy")
    private Timestampbatch_end_year;


    public int getEdu_id() {
        return edu_id;
    }

    public void setEdu_id(int edu_id) {
        this.edu_id = edu_id;
    }

    public Timestamp getBatch_start_year() {
        return batch_start_year;
    }

    public void setBatch_start_year(Timestamp batch_start_year) 
    {
        this.batch_start_year = batch_start_year;
    }

    public Timestamp getBatch_end_year() {
        return batch_end_year;
    }

    public void setBatch_end_year(Timestamp batch_end_year) {
        this.batch_end_year = batch_end_year;
    }

} ```



And when I am inserting date into DB:

```sessionFactory.getCurrentSession().save(user_edu);

            sessionFactory.getCurrentSession().flush();

            return user_edu.getEdu_id(); ```
0 голосов
/ 30 января 2020

Вы можете попробовать с библиотекой Joda-Time. Загрузите его из репозитория Maven .

Вам необходимо обновить два столбца даты, как показано ниже:

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@DateTimeFormat(pattern = "dd-MM-yyyy")
private DateTime batch_start_year;

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@DateTimeFormat(pattern = "dd-MM-yyyy")
private DateTime batch_end_year;

Здесь DateTime должно быть org.joda.time.DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...