eclipselink - EclipseLink 中的 IdClass 有哪些要求?

标签 eclipselink jpa-2.0 composite-primary-key object-equality

EclipseLink user guide规定在为复合主键构造 IdClass(未嵌入)时,它必须具有公共(public)无参构造函数并实现方法 equalshashCode。此外,它给出的示例还实现了 getter 和 setter。

Persistence WikiBook有一个带参数的公共(public)构造函数,没有无参构造函数,没有 getter 和 setter,并且明确声明 EclipseLink 不需要实现 equalshashCode

其中哪一个是真正需要的?我可以使用只有属性、没有构造函数和方法的最小 IdClass,因为 EclipseLink 会为我生成这些吗?这取决于 EclipseLink 的版本吗?

最佳答案

仅需要无参数构造函数(除非您定义了另一个构造函数,否则该构造函数由 java 生成)。您可以使用仅包含属性的最小类。

但是,在这种情况下,EclipseLink 不会生成任何内容(即使使用编织),这意味着您可能会遇到基于哈希或等于的操作的意外问题。

关于eclipselink - EclipseLink 中的 IdClass 有哪些要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035862/

相关文章:

java - 将 NULL 值分配给持久列

java - JPA Eclipselink query.first Result() 和 query.setMaxResults() 与 Postgres

java - JPA - 跨 EntityManager 获取更新/同步的实体(刷新)

java - 多对多的 JPA Criteria API 规范

java - JPA 和公历

mysql - (MySQL) 带 2 个相同外键的主键

java - 在 JPA/JAX-RS Web 服务中验证 JAXBElement

java - 如何使用 JPA2 在 DDL 中为派生标识符指定生成的列名称?

java - 太多对象与主键 oracle.jbo.Key 匹配

database - 数据库中的复合主键