@Entity public class Contact { @Id private Integer id; @Embedded private Name name; @Embedded @AttributeOverrides( @AttributeOverride( name = "line1", column = @Column( name = "home_address_line1" ), ), @AttributeOverride( name = "line2", column = @Column( name = "home_address_line2" ) ), @AttributeOverride( name = "zipCode.postalCode", column = @Column( name = "home_address_postal_cd" ) ), @AttributeOverride( name = "zipCode.plus4", column = @Column( name = "home_address_postal_plus4" ) ) ) private Address homeAddress; @Embedded @AttributeOverrides( @AttributeOverride( name = "line1", column = @Column( name = "mailing_address_line1" ), ), @AttributeOverride( name = "line2", column = @Column( name = "mailing_address_line2" ) ), @AttributeOverride( name = "zipCode.postalCode", column = @Column( name = "mailing_address_postal_cd" ) ), @AttributeOverride( name = "zipCode.plus4", column = @Column( name = "mailing_address_postal_plus4" ) ) ) private Address mailingAddress; @Embedded @AttributeOverrides( @AttributeOverride( name = "line1", column = @Column( name = "work_address_line1" ), ), @AttributeOverride( name = "line2", column = @Column( name = "work_address_line2" ) ), @AttributeOverride( name = "zipCode.postalCode", column = @Column( name = "work_address_postal_cd" ) ), @AttributeOverride( name = "zipCode.plus4", column = @Column( name = "work_address_postal_plus4" ) ) ) private Address workAddress; ... }