Поле даты не получено с использованием JPA - PullRequest
0 голосов
/ 11 октября 2018

У меня есть таблица в базе данных mysql, в которой назван курс со следующими столбцами:

  • Элемент списка
  • id - автоматическое увеличение числа первичных ключей
  • name- varchar (250)
  • start_date - отметка времени по умолчанию сейчас ()

И у меня определена следующая сущность:

@Entity
@Table(name = "course")
public class Course {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@Column(name = "start_date")
@Temporal(TemporalType.DATE)
private Date startDate;

protected Course() {

}

public Course(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Long getId() {
    return id;
}

public Date getStartDate() {
    return startDate;
 }

}

Таким образом, база данных должна заполнить столбец даты.Я использую Spring data JPA, поэтому мой дао выглядит так:

public interface CourseRepository extends CrudRepository<Course, Long> {

}

Я создаю новую сущность Course (с помощью вышеуказанного конструктора, который принимает имя):

courseRepository.save(new Course("Algebra"));

и сохраните его в таблице. Кажется, что столбцы идентификаторов имеют автоматическое приращение, но столбец даты равен нулю, хотя теперь он определен по умолчанию.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Пожалуйста, обратитесь к примеру ниже

@Column(name = "created_date")
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "dd/MM/YYYY")
private Date createdDate;
0 голосов
/ 11 октября 2018

Это происходит потому, что вы никогда не установили startDate.Измените ваш Course конструктор класса следующим образом:

public Course(String name, Date startDate) {
    this.name = name;
    this.startDate = startDate;
}

И вызовите save(), как показано ниже:

courseRepository.save(new Course("Algebra", new Date()));

Метод save получает текущую дату вашей системы и сохраняет ее вбаза данных.

0 голосов
/ 11 октября 2018

Ваш start_date является меткой времени, но вы используете Date в своей модели.

Измените

@Column(name = "start_date")
@Temporal(TemporalType.DATE)
private Date startDate;

на

@Column(name = "start_date", nullable = false, updatable = false)
@CreationTimestamp
private Timestamp startDate; //import java.sql.Timestamp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...