@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;
}
У меня есть объект с использованием Hibernate. У меня есть требование, когда мне нужно обновить поле createdAt, но когда я попытаюсь выполнить его, это не сработает. СозданныйAt с момента создания, что имеет смысл.Как вставить/обновить атрибут объекта, который аннотируется как @CreationTimestamp?
Transaction newTransaction = new Transaction();
newTransaction.setCreatedAT(new Date);
sessionFactory.openSession().save(newTransaction);
Есть ли способ сохранить @CreationTimestamp аннотацию и быть в состоянии изменить или установить другую дату, когда это необходимо?
** Я использую Hibernate 4 с пружиной. Любое решение или другое предложение будет весьма полезно **
Я не вижу, как это намного чище, а затем использует @CreationTimestamp. Вопрос не в том, почему мне нужно вручную установить его. Я просто спрашиваю, возможно ли это - спасибо! – amjad
Недействительный дизайн при попытке изменить то, что должно быть установлено только один раз (createdDate) в библиотеке. Я предполагаю, что аннотации перезаписывают любое значение, которое в настоящее время присутствует, поэтому вы не можете этого сделать. Я бы никогда не подумал, почему это нужно изменить. Если вам действительно нужна такая функциональность, то вообще не определяйте аннотацию и просто используйте геттеры/сеттеры. – Vaelyr
имеет смысл. Оно работает. Благодаря! – amjad