类型

所有类型枚举UUID文件布尔值日期和时间数字其他

JPA 映射
Ebean 映射扩展

构造函数

与 JPA 不同,Ebean 需要默认构造函数。你可以自由创建具有带参数构造函数的实体 Bean。

命名约定

Ebean 使用命名约定 API。这相对重要,因为这通常意味着我们仅需要在不遵循命名约定时指定 @Column name

类似地,只要遵循命名约定(默认为“下划线命名约定”),我们往往不需要明确使用 @JoinColumn@JoinTable

集合

与 Hibernate 不同,Ebean 中的建议是使用 List 而不是 Set 来映射集合。

JPA 注释

Ebean 使用与 JPA 规范相同的映射。你可以学习并使用相同的映射注释。这通常是规范中很好的一部分,我希望规范的这一部分在大多数情况下都能经受住时间的考验。

在某些方面,JPA 通常是不够的。

枚举 JPA 中的枚举映射很差。Ebean 以 @DbEnumValue@EnumValue 的形式提供了 2 个更好的替代方案。我们在 JPA JIRA 问题跟踪器中监视着此问题的进度。
FetchType EAGER / LAZY

JPA 映射鼓励使用 FetchType.EAGER 和 LAZY,这与 Ebean 的查询方法相反,后者会针对每个用例优化查询(并通过对应用程序进行分析来提供自动查询调整)。

在使用 Ebean 时,通常不建议使用 EAGER LAZY 映射注解。

@Size 和 @NotNull

Ebean 支持使用 javax validation 注解 @Size@NotNull

@Size 定义映射的列宽。例如,@Size(50) 等效于 @Column(length=50)
@NotNull 将映射的列定义为非空。等效于 @Column(nullable = false) 或 @ManyToOne(optional=false)。

当前限制

Ebean 目前不支持许多 JPA 映射,但希望将来能够支持。这些映射已记录为增强请求。

116

仅支持单表继承。

没有计划支持 JOINED 或 TABLE PER CLASS 继承策略。

1777

仅支持每个类型一个类型转换器。

JPA @Converter autoApply false 不受支持。这意味着我们希望在所有使用它的属性中一致地映射一个类型。例如,我们不能在同一个 Ebean 数据库实例中使用两个转换器以两种不同的方式映射布尔值。

你可以在 Github 问题 中查看所有未解决的问题和增强功能的列表。

请参阅标记有 限制 标签的 github 问题。