为什么JPA需要域对象的无参数构造函数?

Jac*_*ine 11 java persistence jpa

为什么JPA需要域对象的无参数构造函数?我正在使用eclipselink并在部署期间遇到此异常.

Exception [EclipseLink-63] (Eclipse Persistence Services-1.1.0.r3639-SNAPSHOT): 
org.eclipse.persistence.exceptions.DescriptorException

Exception Description: The instance creation method   
[com.me.model.UserVO.<Default Constructor>], with no parameters, 
  does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: 
  com.me.model.UserVO.<init>()
Descriptor: RelationalDescriptor(com.me.model.UserVO --> 
  [DatabaseTable(user)])
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 14

因为经常发生JPA提供程序必须动态实例化您的域对象.它不能这样做,除非有一个无参数的构造函数 - 它无法猜出参数应该是什么.


Jos*_*ias 7

另请注意,这依赖于提供者.这是JPA规范.

JPA v2.0 JSR-317和v2.1 JSR-338说:

实体类必须具有无参数构造函数.实体类也可以有其他构造函数.no-arg构造函数必须是公共的或受保护的.