我正在使用Spring Data首先保存,然后从存储库中找到B.yId。
我已经解释了下面的情景。
@Entity
@Table(name="table1")
@NamedQuery(name="Table1.findAll", query="SELECT s FROM Table1 s")
public class Table1 implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
@JsonIgnore
private Table1PK id;
@JsonProperty("userName")
@Column(name="created_by", length=50)
private String createdBy;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="created_date", updatable = false)
/* Other columns and getters/setters */
存储库
@Transactional
public interface Table1Repository extends JpaRepository<Table1, Table1PK> {
Table1 findById(Table1PK id);
}
控制器
/* .... */
table1Repository.save(/*Table1*/ table1Data);
Table1 tableDataRetrieved = table1Repository.findById(/*Table1Pk*/ table1Data.getId()); //line# 1
/* .... */
我面临的问题是 createdDate 列被取为空第1行,这只有在保存语句有更新以使。
updatable = false 本质上应该意味着列在尝试保存时不会成为更新语句的一部分。但我不清楚为什么在 findById 调用的输出中没有提取它。
我可以看到Hibernate触发的SQL语句是正确的,并包含 createdDate 列。
我也尝试过saveAndFlush调用,但我仍然将createdDate设为null。
任何指针。