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.