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/Examples/MOXy/JPA
Contents
Overview
This example demonstrates how to derive an XML representation from a set of JPA entities using JAXB.
JPA Entities
For this example the following JPA entities will be used. In order to save space package names, import statements, and the get /set methods have been omitted from the following code samples. All annotations shown below are standard JPA annotations.
@Entity public class Department { @Id @Column(name="D_ID") private BigDecimal dId; private String name; @ManyToMany @JoinTable(name="DEPT_EMP", joinColumns = @JoinColumn(name="D_ID", referencedColumnName = "D_ID"), inverseJoinColumns = @JoinColumn(name="E_ID", referencedColumnName = "E_ID")) private List<Employee> member; }
@Entity public class Employee { @Id @Column(name="E_ID") private BigDecimal eId; private String name; @OneToOne(mappedBy="resident") private Address residence; @OneToMany(mappedBy="contact") private List<PhoneNumber> contactNumber; @ManyToMany(mappedBy="member") private List<Department> team; }
@Entity public class Address { @Id @Column(name="E_ID", insertable=false, updatable=false) private BigDecimal eId; private String city; private String street; @OneToOne @JoinColumn(name="E_ID") private Employee resident; }
@Entity @Table(name="PHONE_NUMBER") public class PhoneNumber { @Id @Column(name="P_ID") private BigDecimal pId; @ManyToOne @JoinColumn(name="E_ID", referencedColumnName = "E_ID") private Employee contact; private String num; }
JAXB Binding
Relationship – One To One (Containment)
This relationship applies when an object privately owns another data object. In JPA the OneToOne annotation indicates that only one instance of the source entity is able to refer to the same target entity instance.
@Entity public class Employee { @OneToOne(mappedBy="resident") private Address residence; }
@Entity public class Address { @OneToOne @JoinColumn(name="E_ID") private Employee resident; }
Relationship – One To One (Non-Containment)
This relationship applies when an object references but does not privately own another data object.
Relationship – One To Many (Containment)
This relationship applies when an object privately owns a collection of data objects.
Relationship – One To Many (Non-Containment)
This relationship applies when an object references but does not privately own a collection of data objects.