You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JHipster实体默认设置日期后Angular前端不显示问题求助

解决JHipster实体日期字段前端显示为空的问题

我之前在JHipster项目里也踩过类似的坑,给你一步步拆解问题根源和解决方案:

1. 先解决最直观的问题:删掉@JsonIgnore注解

你给creationDate和changeDate加了@JsonIgnore,这相当于告诉Jackson序列化的时候直接把这两个字段从JSON里删掉,前端根本拿不到数据,自然显示为空!直接把这两个注解删掉,后端就能把日期值返回给前端了。

2. 修正Java字段的错误配置

你给日期字段加了@GeneratedValue(strategy = GenerationType.AUTO)——这个注解是用来生成主键ID的,完全不适合日期字段,必须删掉!另外,MySQL的date类型和Java的Instant(带时区的时间戳)匹配度不高,换成LocalDate更合适,代码改成这样:

@Column(name = "creation_date", nullable = false, updatable = false)
private LocalDate creationDate = LocalDate.now();

@Column(name = "change_date", nullable = false)
private LocalDate changeDate = LocalDate.now();

3. 用JHipster自带的审计功能更省心

其实JHipster已经集成了Spring Data JPA的审计,不用手动初始化日期。如果你的实体继承了AbstractAuditingEntity(JHipster生成的实体默认会加这个继承),直接用注解让框架自动处理:

@CreatedDate
@Column(name = "creation_date", nullable = false, updatable = false)
private LocalDate creationDate;

@LastModifiedDate
@Column(name = "change_date", nullable = false)
private LocalDate changeDate;

这样实体创建时会自动填充creationDate,每次更新时自动刷新changeDate,不用自己写= LocalDate.now(),更规范也不容易出错。

4. 前端确认配置

后端返回的LocalDate会序列化成"2024-05-20"这种字符串格式,你原来的Angular代码:

<td>{{project.creationDate | date:'YYYY-MM-DD'}}</td>
<td>{{project.changeDate | date:'YYYY-MM-DD'}}</td>

是可以正常解析的。如果还是没显示,检查一下组件所在的模块有没有导入CommonModule——Angular的date管道需要这个模块支持。

5. 最后确认数据库字段

确保MySQL里的creation_date和change_date是DATE类型,和Java的LocalDate对应上,数据就能正常流转了。


内容的提问来源于stack exchange,提问作者PhilReinhard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:48:29