Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EclipseLink/Development/JPA2.0/one-to-one via jointable
Contents
Updated EntityManager / Query APIs
JPA 2.0 Root | Enhancement Request
Issue Summary
In JPA 2.0 the specification states (11.1.23 JoinTable Annotation): The JoinTable annotation is used in the mapping of entity associations. A JoinTable annotation is specified on the owning side of the association. A join table is typically used in the mapping of many-to-many and unidirectional one-to-many associations. It may also be used to map bidirectional many-to-one/one-to-many associations and one-to-one associations (both bidirectional and unidirectional).
General Solution
Core
Add relation table (JoinTable) support for OneToOneMapping. That will look exactly like relation table in ManyToManyMapping.
OneToOneMapping addressMapping = new OneToOneMapping(); ... addressMapping.setRelationTableName("EMP_ADDRESS"); addressMapping.addSourceRelationKeyFieldName("EMP_ADDRESS.EMP_ID", "EMPLOYEE.EMP_ID"); addressMapping.addTargetRelationKeyFieldName("EMP_ADDRESS.ADDR_ID", "ADDRESS.ADDRESS_ID"); descriptor.addMapping(addressMapping);
In bidirectional case one of the two mappings must be read only. OneToManyMapping with relation table could be paired with either OneToManyMapping or ManyToManyMapping.