openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Donald Woods (JIRA)" <>
Subject [jira] Commented: (OPENJPA-1613) Exception thrown when enhancing a (property access) class that has an abstract @MappedSuperclass with no annotated properties
Date Wed, 21 Apr 2010 15:11:51 GMT


Donald Woods commented on OPENJPA-1613:

Agree.  In this case where only has the @Transient on a getter and
no parent classes to examine, then we'd use the old behavior and set the access type as property.
If we do this, then I'd also like to see a WARN message logged, letting the user know we're
setting the access type based on @Transient and they should really set an explicit type instead
(as this behavior may not be portable and could change in future Specs.)  Also, we should
add a WARN when getDefaultAcessType() is called and we end up defaulting to ACCESS_FIELD,
with the same type of warning message.

> Exception thrown when enhancing a (property access) class that has an abstract @MappedSuperclass
with no annotated properties
> -----------------------------------------------------------------------------------------------------------------------------
>                 Key: OPENJPA-1613
>                 URL:
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.0.0-beta2, 2.0.0-beta3
>            Reporter: Simon Droscher
>            Assignee: Jeremy Bauer
>             Fix For: 2.0.1
>         Attachments: abstract-subclass.patch, OPENJPA-1613-failing-code-changes.diff,
> If you have a class (using property access) that has an abstract @MappedSuperclass that
happens to have no annotated methods, you get the following exception when enhancing:
> org.apache.openjpa.util.MetaDataException: "implicit property access" for class "org.apache.openjpa.persistence.simple.SubclassPerson"
is not consistent with "implicit field access" used by its persistent superclass "org.apache.openjpa.persistence.simple.AbstractSuperclass".
 All persistent classes in an inheritance hierarchy must use a single implicit field or property
based access style or explicitly declare an access style.
> Presumably the enhancer is deciding incorrectly that the superclass is using field access.
A workaround is to annotate the superclass with @Access(AccessType.PROPERTY)  so the enhancer
doesn't make this assumption, but that is not JPA 1.0 backwards compatible.
> This did not occur in any of the OpenJPA 1.* versions

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message