我面临着Hibernate ORM v5.3.3.Final的奇怪行为。
我创建了通过审核继承了@MappedSuperclass
的实体。
当该实体的@Id
为Long
@GeneratedValue
@CreationTimestamp
时,效果很好。
在删除@GeneratedValue
并将其设置为String(由我自己管理)之后,@CreationTimestamp
不再在数据库中创建。顺便说一句,当我调用repository.save(entity)
时,此值已生成并出现在java对象中,我什至在JSON响应中看到它。但是它并没有持久化到数据库。无论如何,@UpdateTimestamp
都能很好地工作。
我想这是一个错误,但是我不知道该在哪里发布。
这是我的实体的样本。
@Data
@MappedSuperclass
public abstract class DomainObject implements Serializable {
private static final long serialVersionUID = 6401685143829079597L;
@Column
@CreationTimestamp
private LocalDateTime createdTime;
@Column
@UpdateTimestamp
private LocalDateTime updatedTime;
}
@Data
@Entity
@Table(name = "categories")
public class Category extends DomainObject {
private static final long serialVersionUID = -8399381946756000214L;
@Id
private String id;
}
请确保我在更改实体ID类型时从休眠中删除并生成了新的DDL