【发布时间】:2018-01-01 13:21:26
【问题描述】:
所以,我有一个实体,它有字段 start_date(java.util.Date 是类型)。
我想要另一个字段,它会自动填充与开始日期对应的星期几的整数(如数字 1 代表星期日,2 代表星期一等)。
这是我实体的片段:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Temporal(TemporalType.DATE)
private Date start_date;
我尝试通过以下方式添加计算字段:
@Column(name = "weekday")
@Formula("(select dayofweek(l.start_date) from Lesson l where l.id = id)")
private Integer weekDay;
但是,在 H2 控制台中查看课程表时,没有“工作日”这样的列
我还尝试了其他选项 - 没有 @Formula 注释并且使用带有 start_date 参数的设置器,但我猜这个设置器永远不会被调用,因为“工作日”列填充了空值。 这是我尝试用作替代解决方案的 setter:
public void setWeekDay(Date start_date) {
Calendar c = Calendar.getInstance();
c.setTime(start_date);
this.weekDay = c.get(Calendar.DAY_OF_WEEK);
}
很明显我在这里遗漏了一些东西,可能是因为我还在学习Spring boot......
总而言之-我想在表Lesson中有一列,它是从同一张表的另一列中计算出来的。
【问题讨论】:
-
另外需要注意的是,time 包是一个比 java.util.Date 或 sql.Date 更完整和更好的系统,它们都以各种方式被破坏。您应该考虑切换到它或 JodaTime。
标签: spring hibernate spring-boot