Hibernate with Annotations和MySQL:创建日期

时间:2010-07-23 11:42:09

标签: java mysql hibernate annotations orm

我尝试保存实体的创建日期。我找到了that方法。 我试图实现它,但日期没有到达我的db-table。

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;
 }

}

仅保存标题。数据字段为空: - (

我的错误在哪里?谢谢你的帮助。


更新

我试图添加pascal的注释,但它没有帮助。 是否有可能我应该使用sql.date而不是utils.date。我试试这个,但我找不到如何得到今天的约会......

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我没有成功,但我找到了另一种方式:

@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());

实际上我更喜欢这种方式,因为如果我有一天我会使用持久层,我将无需转移逻辑...欢呼