2014-10-12 5 views
0

Я использую JPA, и я хочу инициализировать поле Date с текущей меткой времени (в случае, если поле явно не задано для определенного значения) Я не хочу делать это в БД слой, потому что я использую MySQL, поле DATETIME, и мы используем версию до MySQL 5.6.5 Вот фрагмент кода:Инициализация по умолчанию по умолчанию в JPA

@Entity 
@Table(name = "comentariu") 
public class Comentariu implements Serializable{ 
... 
    @Column(name = "dataCreare") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date dataCreare = new Date(); 
... 
    public Date getDataCreare() { 
     return dataCreare; 
    } 

    public void setDataCreare(Date dataCreare) { 
     this.dataCreare = dataCreare; 
    } 
} 

Initializing таким образом поощряется here

ли увидеть какие-либо проблемы с этим ? Я обеспокоен тем, что, когда я установил точку останова в инструкции инициализации, я заметил, что код был выполнен несколько раз, возможно, из-за JPA 'engine'

ответ

0

Помимо технических аспектов нетерпеливой и ленивой инициализации, которые четко описаны в упомянутое сообщение выбора также зависит от ваших требований и какой информации должна провести такую ​​временную метка, т.е.

  • время инициализации экземпляра объекта (используйте атрибут)
  • времени значения, связанное с некоторым внешним объектом (использование конструктора или сеттеров)

Из фрагмента кода я вижу, что во время создания объекта инициализируется dataCreare. Если да, зачем вам нужен сеттер? Было бы ненужным усилием повторить инициализацию одного и того же атрибута дважды, не так ли?

Смежные вопросы