@Embedded Objects
The Java Persistence specification allows you to embed nonentity
Java objects within your entity beans and map the properties of this
embedded value object to columns within the entity’s table. These objects
do not have any identity, and they are owned exclusively by their
containing entity bean class. The rules are very similar to the @EmbeddedId primary-key example given earlier in
this chapter. We first start out by defining our embedded object:
@Embeddable
public class Address implements java.io.Serializable
{
private String street;
private String city;
private String state;
public String getStreet() { return street; }
public void setStreet(String street) { this.street = street; }
public String getCity() { return city; }
public void setCity(String city) { this.city = city; }
public String getState() { return state; }
public void setState(String state) { this.state = state; }
}The embedded Address class has
the @Column mappings defined directly
within it. Next, let’s use the @javax.persistence.Embedded annotation within
our Employee bean class to embed an
instance of this Address class:
package javax.persistence;
public @interface Embedded {}As with @EmbeddedId, the @Embedded annotation can be used in conjunction
with the @AttributeOverrides annotation
if you want to override the column mappings specified in the embedded
class. The following example shows how this overriding is done. If you
don’t want to override, leave out the @AttributeOverrides:
@Entity @Table(name="table_employees" ...