openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Azuo Lee (JIRA)" <>
Subject [jira] [Created] (OPENJPA-2377) Metamodel.managedType returns wrong result for Embeddable
Date Thu, 25 Apr 2013 10:16:17 GMT
Azuo Lee created OPENJPA-2377:

             Summary: Metamodel.managedType returns wrong result for Embeddable
                 Key: OPENJPA-2377
             Project: OpenJPA
          Issue Type: Bug
            Reporter: Azuo Lee

I use the following code to dynamically determine if a class is an embeddable:

Class c = Class.forName(s);
if (c instanceof ManagedType) {
    ManagedType type = metamodel.managedType(c);
    if (type.getPersistenceType() == Type.PersistenceType.EMBEDDABLE) {
         logger.debug("" + c + " is an Embeddable.");
         // do somthing with the embeddable
    else if (type.getPersistenceType() == Type.PersistenceType.ENTITY) {
         logger.debug("" + c + " is an Entity.");
         // do somthing with the entity

but when I use this code for an Embeddable, I always get "xxx is an Entity" logged.

After examining the source code, I found "MetamodelImpl.instantiate" method will always put
embeddable to both "embeddables" and "entities" containers, but "MetamodelImpl.managedType"
method will first search "entities" and then "embeddables" for a persistence class, thus,
"Entity" type will be returned for a ACTUAL Embeddable class.

Hope this can be fixed.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message