http://opensource.atlassian.com/projects/hibernate/browse/HHH-6246

by working on mocking orm xml into jpa annotations, i found the most 
complicated logic is how to determine access (where mocked annotations, i.e. 
@Column, go, on property or on field) for an attribute.

by reading jpa spec, i'd think here are the rules of finding default access 
type for attributes: (correct me if i'm wrong, thanks)

A. get it from attribute directly
1. if the attribute xml element in orm xml has an  access property
2. if the attribute has a @Access on its field ( @Access(FIELD) ) or property( 
@Access(PROPERTY) )

B. get it from Entity (MappedSuperClass, Embeddable)
1. if <entity> has "access"
2. if entity class has @Access
loop: 1,2 with entity's parent 
3. if <access> is defined in <persistence-unit-metadata>

C. get it from id attribute
1. if <id> is defined in orm xml and has access attribute
2. if id attribute in entity class has @Id with @Access
3. get the @Id position
loop: 1,2,3 with entity's parent class

D. access= PROPERTY 

but wrt default access which defined in <persistence-unit-metadata>, the JPA 
spec says
{quote}
The access subelement is overridden by the use of any annotations specifying 
mapping information on the fields or properties of the entity class; by any 
Access annotation on the entity class, mapped superclass, or embeddable class; 
by any access subelement of the entity-mappings element; by any Access 
annotation on a field or property of an entity class, mapped superclass, or 
embeddable class; by any access attribute defined within an entity, 
mapped-superclass, or embeddable XML element, or by any access attribute 
defined within an id, embedded-id, version, basic, embedded, many-to-one, 
one-to-one, one-to-many, many-to-many, or element-collection element.
{quote}

which "The access subelement is overridden by the use of any annotations 
specifying mapping information on the fields or properties of the entity class" 
really confuses Hardy and me.

from our "old" binding code, if defauls access is FIELD, and an entity does not 
have any @Access nor access in orm,  hibernate just ignore all annotations on 
PROPERTY.

it seems confilcts with above statement from spec...

-----------
Strong Liu <st...@hibernate.org>
http://hibernate.org
http://github.com/stliu


_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to