Query targetting a common attribute defined in a Table-Per-Class entity 
heirarchy referenced through a relationship fails
-------------------------------------------------------------------------------------------------------------------------

                 Key: OPENJPA-1166
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1166
             Project: OpenJPA
          Issue Type: Bug
    Affects Versions: 1.2.1, 1.2.0
            Reporter: Jody Grassel


Queries that try to reference a common persistable attribute that is defined by 
a Table-Per-Class entity hierarchy through a relationship does not seem to 
work.  The following query: "SELECT e FROM PartnerEntity e  WHERE 
e.rootEntity.rootEntityIntData = ?1" will throw the following Exception:

<openjpa-1.2.2-SNAPSHOT-r422266:789525M fatal user error> 
org.apache.openjpa.persistence.ArgumentException: Cannot join across 
"org.apache.openjpa.persistence.inheritance.entities.mscid.concrete.PIDPartnerEntity.rootEntity".
  The related type has unjoined subclasses.
        at 
org.apache.openjpa.jdbc.meta.strats.RelationStrategies.unjoinable(RelationStrategies.java:53)
        at 
org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.joinRelation(RelationFieldStrategy.java:819)
        at 
org.apache.openjpa.jdbc.meta.FieldMapping.joinRelation(FieldMapping.java:860)
        at 
org.apache.openjpa.jdbc.kernel.exps.PCPath.joinRelation(PCPath.java:610)
        at 
org.apache.openjpa.jdbc.kernel.exps.PCPath.traverseField(PCPath.java:589)
        at 
org.apache.openjpa.jdbc.kernel.exps.PCPath.initialize(PCPath.java:461)
        at 
org.apache.openjpa.jdbc.kernel.exps.CompareEqualExpression.initialize(CompareEqualExpression.java:78)
        at 
org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.initialize(SelectConstructor.java:180)
        at 
org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.newSelect(SelectConstructor.java:121)
        at 
org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.evaluate(SelectConstructor.java:75)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.createWhereSelects(JDBCStoreQuery.java:339)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeQuery(JDBCStoreQuery.java:179)
        at 
org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeQuery(ExpressionStoreQuery.java:681)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:988)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:775)
        at 
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:252)
        at 
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:294)

Where the following entities are defined:

@Entity
public class PartnerEntity  {
   @Id private int id;
   @OneToOne  private RootEntity rootEntity;
   ...
}

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class RootEntity {
   @Id private int id;
   private int rootEntityIntData;
...
}

[there exist a number of entities which inherit from RootEntity, the example 
above targets the persistable attribute "rootEntityIntData" which is inherited 
by every entity extending RootEntity.)

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

Reply via email to