我有一個看起來像這樣的表:
CREATE TABLE `test_table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`ref_id` bigint(20) NOT NULL,
`count` int(11) DEFAULT NULL,
`status` tinyint(4) NOT NULL,
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
POJO:
@Entity
@Data
@Table(name = "test_table")
public class TestTable implements Serializable {
private static final long serialVersionUID = 4273269337137129245L;
@Id
@Column(name = "id")
@GenericGenerator(name = "assigned-identity", strategy = "com.paytm.pgplus.datasource.custom.AssignedIdentityGenerator")
@GeneratedValue(generator = "assigned-identity", strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "ref_id")
private Long refId;
@Column(name = "count")
private Integer count;
@Column(name = "status")
@Enumerated(EnumType.ORDINAL)
private Status status;
@Column(name = "create_timestamp")
@Temporal(TemporalType.TIMESTAMP)
private Date createTimeStamp;
@Column(name = "update_timestamp")
@Temporal(TemporalType.TIMESTAMP)
private Date updateTimeStamp;
}
我正在使用 Hibernate 更新此表。我正在更新status成功更新的列。但期望是,update_timestamp只要沒有發生任何列的更新,該列也應該相應地更新test_table。
我在這里想念什么?
uj5u.com熱心網友回復:
嘗試將 POJO 中的 updateTimeStamp 更新為:
@Generated(GenerationTime.ALWAYS)
@Column(name = "updateTimeStamp")
@Temporal(TemporalType.TIMESTAMP)
private Date updateTimeStampt;
uj5u.com熱心網友回復:
實際上,我們需要告訴 hibernate 我們要在更新時更新列。
為此使用@CreationTimestamp(將在我們插入記錄時設定)和@UpdateTimestamp(將在記錄更新時設定)。
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_timestamp")
private Date createTimestamp;
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "update_timestamp")
private Date updateTimestamp;
uj5u.com熱心網友回復:
您需要更改列注釋以包含可更新 = false。這將導致 edit_timestamp 列不顯示在更新 SQL 中,因此 JPA 提供程式不會包含導致它覆寫默認值的欄位的當前值。
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "update_timestamp",
updatable = false,
columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date editTimestamp;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511718.html
上一篇:java.lang.NoClassDefFoundError:無法初始化類org.springframework.web.observation.HttpRequestsObservationFilt
