EclipseLink 中的 IdClass 有哪些要求?
What are the requirements for an IdClass in EclipseLink?
EclipseLink user guide 声明当为复合主键构造一个 IdClass(非嵌入式)时,它必须有一个 public 无参数构造函数并实现方法 equals
和hashCode
。另外,它给出的例子还实现了getters和setters。
Persistence WikiBook 有一个带参数的 public 构造函数,没有无参数构造函数,没有 getter 和 setter,并明确声明 EclipseLink 不需要实现 equals
和 hashCode
.
其中哪些是真正需要的?我可以使用只有属性但没有构造函数和方法的最小 IdClass 吗,因为 EclipseLink 会为我生成这些?这取决于 EclipseLink 的版本吗?
只需要无参数构造函数(由 java 生成,除非您定义了另一个构造函数)。您可以仅对属性使用最小 class。
但是,在这种情况下,EclipseLink 不会生成任何内容(即使使用织入),这意味着您可能会遇到基于散列或等于的操作的意外问题。
EclipseLink user guide 声明当为复合主键构造一个 IdClass(非嵌入式)时,它必须有一个 public 无参数构造函数并实现方法 equals
和hashCode
。另外,它给出的例子还实现了getters和setters。
Persistence WikiBook 有一个带参数的 public 构造函数,没有无参数构造函数,没有 getter 和 setter,并明确声明 EclipseLink 不需要实现 equals
和 hashCode
.
其中哪些是真正需要的?我可以使用只有属性但没有构造函数和方法的最小 IdClass 吗,因为 EclipseLink 会为我生成这些?这取决于 EclipseLink 的版本吗?
只需要无参数构造函数(由 java 生成,除非您定义了另一个构造函数)。您可以仅对属性使用最小 class。
但是,在这种情况下,EclipseLink 不会生成任何内容(即使使用织入),这意味着您可能会遇到基于散列或等于的操作的意外问题。