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

时间:2010-05-11 07:20:22

标签: java jpa persistence

为什么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)])

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:7)

另请注意,这与提供商有关。这是JPA规范。

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

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