EBean(4.5.x)是否支持映射Java 8的时间类型,例如OffsetDateTime

Kev*_*vin 3 java playframework java-8 ebean

有一张关闭的票证表明Ebean 4.4.1及以后版本支持Java 8的时间类,例如OffsetDateTime.但是,我找不到任何显示使用这些类的Ebean文档.

对于如下AppUser所示的类,是否完全支持使用OffsetDateTime而不是java.sql.Timestamp

@Entity
public class AppUser extends Model {

    @Id
    private Long id;
    private String username;
    private OffsetDateTime lastSeen;

    // Constructor, getters and setters
}
Run Code Online (Sandbox Code Playgroud)

mar*_*ira 6

这些新类型没有文档,但代码非常简单明了:

https://github.com/ebean-orm/avaje-ebeanorm/blob/master/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeOffsetDateTime.java

正如您在代码中看到的那样,OffsetDateTime映射到a java.sql.Timestamp.这是一个(可能)完整的表格,说明Ebean如何将java.time类型映射到java.sql.Types:

| Java 8 java.time.*               | java.sql.Types |
|:---------------------------------|:---------------|
| DayOfWeek                        | INTEGER        |
| Duration                         | BIGINT         |
| Duration (with nanos precision)  | DECIMAL        |
| Instant                          | TIMESTAMP      |
| LocalDate                        | DATE           |
| LocalDateTime                    | TIMESTAMP      |
| LocalTime                        | TIME           |
| LocalTime (with nanos precision) | BIGINT         |
| Month                            | INTEGER        |
| MonthDay                         | DATE           |
| OffsetDateTime                   | TIMESTAMP      |
| OffsetTime                       | VARCHAR        |
| Year                             | INTEGER        |
| YearMonth                        | DATE           |
| ZoneId                           | VARCHAR        |
| ZoneOffset                       | VARCHAR        |
| ZonedDateTime                    | TIMESTAMP      |
Run Code Online (Sandbox Code Playgroud)