Спящий режим с аннотациями и MySQL: дата создания - PullRequest
2 голосов
/ 23 июля 2010

Я пытаюсь сохранить дату создания моей сущности. Я нашел этот подход. Я пытался реализовать это, но дата не достигла моей базы данных.

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.PrePersist;

@Entity
public class Project implements Serializable {

 private static final long serialVersionUID = 7620757776698607619L;

 @Id
 int id;
 String title;
 Date created;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public void setTitle(String title) {
  this.title = title;
 }

 public String getTitle() {
  return title;
 }

 @PrePersist
 protected void onCreate() {
   created = new Date();
 }

 public Date getCreated() {
  return created;
 }

}

Сохраняется только заголовок. Поле для данных пустое: - (

Где моя ошибка? Спасибо за помощь.


Обновление

Я пытался добавить аннотацию паскаля, но это не помогло. Возможно ли, что я должен использовать sql.date istead of utils.date. Я пробую это, но я не могу найти, как получить сегодняшнюю дату ...

Ответы [ 2 ]

1 голос
/ 23 июля 2010

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

@Entity
public class Project implements Serializable {

    @Id
    private int id;
    private String title;
    @Temporal(TemporalType.TIMESTAMP)
    private Date created;

    ...

    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }

    @PrePersist
    protected void onCreate() {
        created = new Date();
    }

}
0 голосов
/ 28 июля 2010

Я не сделал этого, но я нашел другой способ:

@Entity
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private Date created;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }
}

Это мой EntityObject ... Я оставил его стандартным способом и поместил логику в уровень моего контроллера, который находится выше:

public String saveNewProject() {
    projectData.getProjectDTO().setCreated(new Date());
    projectService.addProject(projectData.getProjectDTO());

На самом деле мне это нравится больше, потому что если я когда-нибудь заменю слой постоянства, мне не придется передавать логику ... ура

...