[hibernate-issues] [Hibernate-JIRA] Assigned: (HHH-4529) Support for derived identity (including @MapsId)
Emmanuel Bernard (JIRA)
noreply at atlassian.com
Wed Nov 11 02:36:09 EST 2009
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-4529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Emmanuel Bernard reassigned HHH-4529:
-------------------------------------
Assignee: Hardy Ferentschik
> Support for derived identity (including @MapsId)
> ------------------------------------------------
>
> Key: HHH-4529
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4529
> Project: Hibernate Core
> Issue Type: Sub-task
> Components: annotations
> Reporter: Emmanuel Bernard
> Assignee: Hardy Ferentschik
> Fix For: 3.5
>
>
> 2.4.1.1
> IdClass (derived side)
> "The names of the attributes of the id class and the Id attributes of the dependent entity class
> must correspond as follows:
> • The Id attribute in the entity class and the corresponding attribute in the id class must
> have the same name.
> • If an Id attribute in the entity class is of basic type, the corresponding attribute in the
> id class must have the same type.
> • If an Id attribute in the entity is a many-to-one or one-to-one relationship to a parent
> entity, the corresponding attribute in the id class must be of the same Java type as the
> id class or embedded id of the parent entity (if the parent entity has a composite pri-
> mary key) or the type of the Id attribute of the parent entity (if the parent entity has a
> simple primary key). "
> This basically mean that property names int he entity and idClass must match. Types should be identical unless a @Id @XToOne Parent parent; is present in the entity. In this case the corresponding IdClass property should be of the type of the Parent PK
> "Alternatively, If the dependent entity has a single primary key attribute (i.e., the relationship attribute), the id
> class specified by the dependent entity must be the same as the primary key class of the parent
> entity. The Id annotation is applied to the relationship to the parent entity."
> "If the dependent entity uses an embedded id to represent its primary key, the attribute in the embedded
> id corresponding to the relationship attribute must be of the same type as the primary key of the parent
> entity and must be designated by the MapsId annotation applied to the relationship attribute. The
> value element of the MapsId annotation must be used to specify the name of the attribute within the
> embedded id to which the relationship attribute corresponds. If the embedded id of the dependent entity
> is of the same Java type as the primary key of the parent entity, the relationship attribute maps both the
> relationship to the parent and the primary key of the dependent entity, and in this case the MapsId
> annotation is specified without the value element."
> class Person
> @Id PersonPK id;
> @MapsId("ssnId") @ManyToOne SSN ssn;
>
> static class PersonPK {
> String name;
> String ssnId;
> }
> }
> class SSN {
> @Id String id;
> }
> "If the dependent entity has a single primary key attribute (i.e, the relationship attribute or an attribute
> that corresponds to the relationship attribute) and the primary key of the parent entity is a simple pri-
> mary key, the primary key of the dependent entity is a simple primary key of the same type as that of the
> parent entity (and neither EmbeddedId nor IdClass is specified). In this case, either (1) the rela-
> tionship attribute is annotated Id, or (2) a separate Id attribute is specified and the relationship attribute
> is annotated MapsId (and the value element of the MapsId annotation is not specified)"
> "A primary key attribute that is derived from the identity of a parent entity is mapped by the correspond-
> ing relationship attribute. The default mapping for this relationship is as specified in section 2.10. In
> the case where a default mapping does not apply or where a default mapping is to be overridden, the
> JoinColumn or JoinColumns annotation is used on the relationship attribute.
> If the dependent entity uses an embedded id to represent its primary key, the AttributeOverride
> annotation may be used to override the default mapping of embedded id attributes that do not corre-
> spond to the relationship attributes mapping the derived identity. The embedded id attributes that cor-
> respond to the relationship are treated by the provider as "read only"—that is, any updates to them on
> the part of the application are not propagated to the database.
> If the dependent uses an id class, the Column annotation may be used to override the default mapping
> of Id attributes that are not relationship attributes. "
> Examples for all that on page 31
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list