OpenJPA
  1. OpenJPA
  2. OPENJPA-2377

Metamodel.managedType returns wrong result for Embeddable

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.3.0
    • Component/s: None
    • Labels:
      None

      Description

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

      Class c = Class.forName(s);
      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.

        Activity

        Hide
        Albert Lee added a comment -

        This patch fixed the reported problem.

        While investigating the problem, due to meta model implementation, we have identified the getEntities and getManagedTypes return more entries than expected if embeddable is used. This patch also fix these problems as well.

        Show
        Albert Lee added a comment - This patch fixed the reported problem. While investigating the problem, due to meta model implementation, we have identified the getEntities and getManagedTypes return more entries than expected if embeddable is used. This patch also fix these problems as well.
        Hide
        Albert Lee added a comment -

        Azuo,

        Can you apply the patch and verify if this resolve your problem.

        Thanks,
        Albert Lee.

        Show
        Albert Lee added a comment - Azuo, Can you apply the patch and verify if this resolve your problem. Thanks, Albert Lee.
        Hide
        Azuo Lee added a comment - - edited

        The patch works fine for my code. Thanks.

        P.S. Should I resolve and close the issure right now, or it will be closed automatically (or by you?) after the patch is committed?

        Show
        Azuo Lee added a comment - - edited The patch works fine for my code. Thanks. P.S. Should I resolve and close the issure right now, or it will be closed automatically (or by you?) after the patch is committed?
        Hide
        Albert Lee added a comment -

        Azuo, I have resolved the issue and you can close the JIRA when you feel it has resolved your problem.

        Show
        Albert Lee added a comment - Azuo, I have resolved the issue and you can close the JIRA when you feel it has resolved your problem.

          People

          • Assignee:
            Albert Lee
            Reporter:
            Azuo Lee
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development