将LocalDateTime设置为使用hibernate 4.3.10自动生成

时间:2015-06-08 07:57:12

标签: java hibernate time

目前我有一个基本实体,如下所示:

LocalDateTime

是否可以使用某些内容注释func getLeapCount(startDate : NSDate , endDate : NSDate)-> Int{ var intialDate = startDate var dateComponent = NSDateComponents() dateComponent.day = 1 var leapCount = 0; var currentCalendar = NSCalendar.currentCalendar() while (intialDate.compare(endDate) == NSComparisonResult.OrderedAscending) { intialDate = currentCalendar.dateByAddingComponents(dateComponent, toDate: intialDate, options: NSCalendarOptions.allZeros)! if self.isLeapYear(startDate){ ++leapCount } } return leapCount } func isLeapYear (year : NSDate )-> Bool{ let cal = NSCalendar.currentCalendar() let year = cal.component(NSCalendarUnit.CalendarUnitYear, fromDate: year) return (( year%100 != 0) && (year%4 == 0)) || year%400 == 0; } 以使数据库默认为当前日期和时间?

P.S。我不允许使用hibernate 5.

2 个答案:

答案 0 :(得分:1)

您可以使用@PrePersist注释。

  

在实体管理器实际执行操作之前执行   执行或级联。此调用与持久性同步   操作

示例:

  @PrePersist
  protected void onCreate() {
    createdAt = new LocalDateTime();
    updatedAt = new LocalDateTime();
  }

如果你认为合适,你也可以使用@PreUpdate注释。

详细了解events that occur inside hibernate's persistence mechanism

答案 1 :(得分:0)

@LaurentiuL是正确的。
但我认为以下也应该有效

@Convert(converter = LocalDateTimePersistenceConverter.class)
private LocalDateTime createdAt = new LocalDateTime ();
@Convert(converter = LocalDateTimePersistenceConverter.class)
private LocalDateTime updatedAt= new LocalDateTime ();

此问题的答案也可以帮助您:Creation timestamp and last update timestamp with Hibernate and MySQL