这是我的实体类:
@Entity
@Table(name = "trade_data")
public class TradeData {
//POJO Class- Entity Trade data
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "s_no", unique = true)
private int s_no;
@Column(name = "tradeDate")
private java.sql.Date tradeDate = new java.sql.Date(System.currentTimeMillis());
@Column(name = "effectiveDate")
private java.sql.Date effectiveDate;
@Column(name = "maturityDate")
private java.sql.Date maturityDate;
//error
@Column(name = "creationTimeStamp", insertable = false)
private java.sql.Timestamp CreationTimeStamp = new
java.sql.Timestamp(System.currentTimeMillis());
//error
@Column(name = "VersionTimeStamp", nullable = false)
private java.sql.Timestamp VersionTimeStamp = new
java.sql.Timestamp(System.currentTimeMillis());
//error
@Column(name = "ConfirmationTimeStamp", insertable = false)
private java.sql.Timestamp ConfirmationTimeStamp;
}
所有java.sql.Timestamp变量都为小时、分钟、秒、年、月、日提供了不同的字段,而不是一个单独的字段,而且它也没有在字段中提供预先填充的数据,即使我使用System.currentTimemillis((放置当前时间戳。此外,当我使用@RequestBody时,它应该接受json数据,但它显示了在.中输入数据的字段
这是一张图片供参考:[1] :https://i.stack.imgur.com/T9giP.png
REST API和Swagger不应公开java.sql.Date
类。它仅供应用程序内部使用。
在这种情况下,您可以考虑使用LocalDateTime
类型。请参阅下面的实体类示例:
@Entity
@Table(name = "trade_data")
public class TradeData {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "s_no", unique = true)
private int s_no;
@Column(name = "tradeDate")
private LocalDate tradeDate = LocalDate.now(ZoneId.systemDefault());;
@Column(name = "effectiveDate")
private LocalDate effectiveDate;
@Column(name = "maturityDate")
private LocalDate maturityDate;
}
您可能还想考虑引入一个单独的DTO类,该类将在Swagger和RESTneneneba API中公开,而不是实体类。关于使用DTO类,可能会有不同的意见,这在很大程度上取决于您的配置和用例。总的来说,这不是一个坏主意。