<!-- Override TextViewStyle style for AppThemeLight-->
<style name ="AppThemeLight.TextBlockStyle" parent="@style/TextBlockStyle">
<item name="android:textColor">@color/my_purple</item>
<item name="android:textSize">20sp</item>
</style>
<!-- Override TextViewStyle style for AppThemeDark-->
<style name ="AppThemeDark.TextBlockStyle" parent="@style/TextBlockStyle">
<item name="android:textColor">@color/my_green</item>
<item name="android:textSize">40sp</item>
</style>
我有上面的实体使用Hibernate。我有一个要求,我需要更新createdAt字段,但当我尝试遵循它没有工作。 createdAt是从创作之日起生效的。
@Entity
@Table(name="transactions")
@NamedQuery(name="Transaction.findAll", query="SELECT t FROM Transaction t")
public class Transaction implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id", nullable=false, unique=true, length=11)
private int id;
@CreationTimestamp
@Column(name="created_at")
private Date createdAt;
}
有没有办法保留@CreationTimestamp注释,并且能够在需要时修改或设置另一个日期?
**我正在使用Hibernate 4和Spring。任何解决方案或其他建议都将受到高度赞赏**
答案 0 :(得分:4)
为什么要手动设置?更清洁的解决方案是在您的实体类中使用2个方法。这两个注释都来自持久性包。
private Date creationTime;
private Date modificationTime;
@PrePersist
public void prePersist() {
Date now = Date();
this.creationTime = now;
this.modificationTime = now;
}
@PreUpdate
public void preUpdate() {
this.modificationTime = Date();
}
或者最好使用Java 8 / Jodatime类,在这种情况下你需要手动设置@Type
字段,因为据我所知Hibernate不支持它们。