Implements @j.p.Access
----------------------
Key: HHH-4527
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4527
Project: Hibernate Core
Issue Type: Sub-task
Components: annotations
Reporter: Emmanuel Bernard
Fix For: 3.5
2.3.1, 2.3.2
"the default access type is determined by the placement of mapping annotations on the
attributes of the entity classes and mapped superclasses of the entity hierarchy that do
not explicitly
specify an access type"
"An access type for an individual entity class, mapped superclass, or embeddable
class can be specified
for that class independent of the default for the entity hierarchy by means of the Access
annotation
applied to the class. This explicit access type specification does not affect the access
type of other entity
classes or mapped superclasses in the entity hierarchy."
"When Access(FIELD) is applied to such a class, it is possible to
selectively designate individual attributes within the class for property access. To
specify a
persistent property for access by the persistence provider runtime, that property must be
desig-
nated Access(PROPERTY) [...] Persistent state inherited from superclasses is accessed in
accordance with the access types of
those superclasses."
"When Access(PROPERTY) is applied to such a class, it is possible to selectively
designate indi-
vidual attributes within the class for instance variable access. To specify a persistent
instance
variable for access by the persistence provider runtime, that instance variable must be
desig-
nated Access(FIELD). Persistent state inherited from superclasses is accessed in
accordance with the access types of
those superclasses. "
"The access type of an embeddable class is determined by the access type of the
entity class, mapped
superclass, or embeddable class in which it is embedded (including as a member of an
element collec-
tion) independent of whether the access type of the containing class has been explicitly
specified or
defaulted. A different access type for an embeddable class can be specified for that
embeddable class
by means of the Access annotation "
So in "summary":
- the default access type of a hierarchy is defined by where annotations are placed (id
ideally) on classes that do not override access type
- the @Access type is not inherited to subclasses (the default access type for the
hierarchy is inherited) **
- the access type of an embeddable or collection of embeddable, if not set explicitly is
the one of its containing class (note the logic is different that in a hierarchy)
- the @Access annotation can be placed on a field to force field access on a class
defaulted to property (and vice versa) *
* reverse behavior compared to @o.h.a.AccessType
** I think it's a different behavior than the current @AccessType annotation
If possible, keep support for the legacy @o.h.a.AccessType:
- it supports alternative access strategies
- it will keep legacy apps running :)
--
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira