不需要无参数构造函数的 JPA 实现

hot*_*key 5 java jpa default-constructor

是否有一个 ORM 框架实现 JPA 但不需要@Entity类中的默认(无参数)构造函数?

AFAIK,JPA 文档中说@Entity应该有默认构造函数,但是实现可以支持构造函数参数注入(或者可能是不安全的对象实例化),因此可以在没有默认构造函数的情况下使用类吗?

此功能对于确保不变性(标准JPA 所缺乏的)有很大帮助,并且可以让开发人员在类实例状态上保持严格的不变量(例如,其字段始终具有正确的值)。

顺便说一下,在使用 Kotlin 时,无参数构造函数的需要会影响良好的代码风格和编码约定。

有一个JIRM库可以处理构造函数注入和不变性,但它不是完整的 JPA 实现。

那么,是否有 JPA ORM 支持@Entity没有默认构造函数的类?

Mag*_*lex 5

是否有一个实现 JPA 但不需要 @Entity 类的默认(非参数)构造函数的 ORM 框架?

不可以,因为这会违反规范。以下引用来自JPA 2.1规范的第 23 页:

实体类必须具有无参数构造函数。实体类还可以有其他构造函数。无参数构造函数必须是公共的或受保护的。

话虽如此,可能存在一些部分实现 JPA 的 ORM 框架忽略了此功能。