【发布时间】:2019-03-16 01:38:06
【问题描述】:
我在 mysql 数据库中有一个名为 course 的表,其中包含以下列:
- 列表项
- id - int 主键自动递增
- 名称 - 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,所以我的 dao 看起来像这样:
public interface CourseRepository extends CrudRepository<Course, Long> {
}
我创建了一个新的 Course 实体(通过上面接受名称的构造函数):
courseRepository.save(new Course("Algebra"));
并将其保存到表中,似乎 id 列是自动递增的,但 date 列是 null,即使它现在定义为默认值。
【问题讨论】:
-
似乎您在数据库中定义默认值而不是您的实体。那么当它从实体生成像“date=null”这样的sql时,你的数据库会接受还是修改这个值?我相信它会接受 null 作为你的结果
-
Deafult 并不意味着不为空。这里 spring 正在创建一个完整的查询,特别是 db 在该字段中设置为空。 ...有关更多详细信息,请转到:stackoverflow.com/questions/11862188/…