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.
Difference between revisions of "EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Ids/EmbeddedId"
m |
m |
||
Line 22: | Line 22: | ||
This example shows a typical composite primary key class annotated with [[#@Embeddable|<tt>@Embeddable</tt>]]. The [[#Example 18-6|Usage of @EmbeddedId Annotation]] example shows how to configure an entity with this embeddable composite primary key class using the <tt>@EmbeddedId</tt> annotation. | This example shows a typical composite primary key class annotated with [[#@Embeddable|<tt>@Embeddable</tt>]]. The [[#Example 18-6|Usage of @EmbeddedId Annotation]] example shows how to configure an entity with this embeddable composite primary key class using the <tt>@EmbeddedId</tt> annotation. | ||
− | |||
<span id="'Example 18-5"></span> | <span id="'Example 18-5"></span> | ||
− | '' | + | ======''Example: Embeddable Composite Primary Key Class''====== |
<source lang="java"> | <source lang="java"> | ||
public class EmployeePK implements Serializable { | public class EmployeePK implements Serializable { | ||
Line 66: | Line 65: | ||
<span id="Example 18-6"></span> | <span id="Example 18-6"></span> | ||
− | '' | + | ======''Example: Usage of @EmbeddedId Annotation''====== |
<source lang="java"> | <source lang="java"> | ||
@Entity | @Entity |
Revision as of 13:18, 29 March 2011
EclipseLink JPA
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
@EmbeddedId
Use the @EmbeddedId annotation to specify an embeddable composite primary key class (usually made up of two or more primitive or JDK object types) owned by the entity.
Note: Composite primary keys typically arise during mapping from legacy databases when the database key is comprised of several columns.
A composite primary key class has the following characteristics:
- It is a POJO class.
- It is a public class with a public no-argument constructor.
- If you use property-based access, the properties of the primary key class are public or protected.
- It is serializable.
- It defines equals and hashCode methods. The semantics of value equality for these methods must be consistent with the database equality for the database types to which the key is mapped.
Alternatively, you can make the composite primary key class a nonembedded class (see @IdClass).
The @EmbeddedId annotation does not have attributes.
This example shows a typical composite primary key class annotated with @Embeddable. The Usage of @EmbeddedId Annotation example shows how to configure an entity with this embeddable composite primary key class using the @EmbeddedId annotation.
Example: Embeddable Composite Primary Key Class
public class EmployeePK implements Serializable { private String empName; private long empID; public EmployeePK() { } public String getName() { return this.empName; } public void setName(String name) { this.empName = name; } public long getId() { return this.empID; } public void setId(long id) { this.empID = id; } public int hashCode() { return (int)this.empName.hashCode()+ this.empID; } public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof EmployeePK)) return false; if (obj == null) return false; EmployeePK pk = (EmployeePK) obj; return pk.empID == this.empID && pk.empName.equals(this.empName); } }
Example: Usage of @EmbeddedId Annotation
@Entity public class Employee implements Serializable{ EmployeePK primaryKey; public Employee { } @EmbeddedId public EmployeePK getPrimaryKey() { return primaryKey: } public void setPrimaryKey(EmployeePK pk) { primaryKey = pk; } ... }
For more information, see 9.1.14 "EmbeddedId Annotation" in the JPA Specification.