Spring 如何插入/更新注释为@CreationTimestamp的实体属性?
我有上面的实体与Hibernate一起使用。我有一个要求,我需要更新createdAt字段,但当我尝试遵循它没有工作。createdAt是从创作日期开始的,这是有意义的Spring 如何插入/更新注释为@CreationTimestamp的实体属性?,spring,hibernate,jpa,Spring,Hibernate,Jpa,我有上面的实体与Hibernate一起使用。我有一个要求,我需要更新createdAt字段,但当我尝试遵循它没有工作。createdAt是从创作日期开始的,这是有意义的 @Entity @Table(name="transactions") @NamedQuery(name="Transaction.findAll", query="SELECT t FROM Transaction t") public class Transaction implements
@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注释,并在需要时修改或设置另一个日期
**我正在使用Hibernate4和Spring。我们将非常感谢任何解决方案或其他建议**为什么要手动设置?更干净的解决方案是在实体类中有两个方法。这两个注释都来自持久性包
Transaction newTransaction = new Transaction();
newTransaction.setCreatedAT(new Date);
sessionFactory.openSession().save(newTransaction);
或者最好使用Java 8/Jodatime类,在这种情况下,您需要手动设置字段的
@Type
,因为据我所知,Hibernate不支持开箱即用。为什么要手动设置?更干净的解决方案是在实体类中有两个方法。这两个注释都来自持久性包
Transaction newTransaction = new Transaction();
newTransaction.setCreatedAT(new Date);
sessionFactory.openSession().save(newTransaction);
或者最好使用Java 8/Jodatime类,在这种情况下,您需要手动为字段设置
@Type
,因为据我所知,Hibernate不支持开箱即用。我不认为这比使用@CreationTimestamp更干净。问题不是我为什么需要手动设置它。我只是想问问这是否可行——谢谢!当试图修改本应仅由库设置一次(createdDate)的内容时,该设计无效。我假设注释覆盖了当前存在的任何值,所以您不能这样做。我永远也想不到为什么它需要改变。如果你真的需要这种功能,那么根本不需要定义注释,只需要使用getter/setter。我不认为这比使用@CreationTimestamp更干净。问题不是我为什么需要手动设置它。我只是想问问这是否可行——谢谢!当试图修改本应仅由库设置一次(createdDate)的内容时,该设计无效。我假设注释覆盖了当前存在的任何值,所以您不能这样做。我永远也想不到为什么它需要改变。如果您确实需要这种功能,那么根本不需要定义注释,只需要使用getter/setter。