Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何插入/更新注释为@CreationTimestamp的实体属性?_Spring_Hibernate_Jpa - Fatal编程技术网

Spring 如何插入/更新注释为@CreationTimestamp的实体属性?

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

我有上面的实体与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注释,并在需要时修改或设置另一个日期


**我正在使用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。