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

有没有实现JPA的ORM框架,但不需要@Entity类的默认(无参数)构造函数?

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

这个特性对于确保不变性( 标准的 JPA缺少)有很大的帮助,并且可以让开发人员对类实例状态保持严格的不variables(例如,它的字段总是有正确的值)。

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

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

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

有没有实现JPA的ORM框架,但不需要@Entity类的默认(非arg)构造函数?

不,因为它会打破规范。 以下引用来自JPA 2.1规范的第23页:

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

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