[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1631?page=all ]
Steve Ebersole resolved HHH-1631:
---------------------------------
Resolution: Fixed
trunk / 3.2
Missing table in SQL from clause that is referenced in where clause
when using joined subclass
----------------------------------------------------------------------------------------------
Key: HHH-1631
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1631
Project: Hibernate3
Type: Bug
Components: query-hql
Versions: 3.1.3
Environment: Hibernate 3.1.3
Annotations 3.1 beta 8
Postgresql 8.1.3
Reporter: Pat Double
Assignee: Steve Ebersole
Fix For: 3.2.1
Attachments: BrokenHibernateDowncast.java
I have an HQL statement that is missing a join clause in the generated SQL. The entity is
using a hierarchy with joined subclass. I am using annotations to define the mapping. I
want to query based on a subclass property, so hibernate has to do a "downcast"
of some sort. Here's the HQL:
select pound.location.state from "+Pound.class.getName()+" as pound inner join
pound.cats as cat where pound.location.name='Anytown' and cat.meanness > 5
This works fine if I do not have the select clause, when I add the select clause it fails
and removes the join for the subclass "Bobcat", which has the property
"meanness". I have included a full test case including configuration.
This looks related to the recently fixed bug HHH-1248. It could also be related to
HHH-940, but I'm not sure.
06-03-22 15:05:24,467 WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0,
SQLState: 42P01
2006-03-22 15:05:24,469 ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: missing
FROM-clause entry for table "brokenhibe2_2_"
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could
not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2148)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at
com.i2rd.occasio.test.BrokenHibernateDowncast.main(BrokenHibernateDowncast.java:179)
Caused by: org.postgresql.util.PSQLException: ERROR: missing FROM-clause entry for table
"brokenhibe2_2_"
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:437)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:257)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
... 8 more
06-03-22 15:05:24,467 WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0,
SQLState: 42P01
2006-03-22 15:05:24,469 ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: missing
FROM-clause entry for table "brokenhibe2_2_"
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could
not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2148)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at
com.i2rd.occasio.test.BrokenHibernateDowncast.main(BrokenHibernateDowncast.java:179)
Caused by: org.postgresql.util.PSQLException: ERROR: missing FROM-clause entry for table
"brokenhibe2_2_"
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:437)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:257)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
... 8 more
select
brokenhibe3_.state as col_0_0_
from
pound brokenhibe0_
inner join
pound_cat cats1_
on brokenhibe0_.id=cats1_.pound_id
inner join
cat brokenhibe2_
on cats1_.cats_id=brokenhibe2_.id,
city brokenhibe3_
where
brokenhibe0_.location_id=brokenhibe3_.id
and brokenhibe3_.name='Anytown'
and brokenhibe2_2_.meanness>5
2006-03-22 15:18:18,127 DEBUG [null main] query.QueryPlanCache (QueryPlanCache.java:69) -
unable to locate HQL query plan in cache; generating (select pound.location.state from
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound as pound inner join pound.cats as cat
where pound.location.name='Anytown' and cat.meanness > 5)
2006-03-22 15:18:18,129 DEBUG [null main] ast.QueryTranslatorImpl
(QueryTranslatorImpl.java:236) - parse() - HQL: select pound.location.state from
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound as pound inner join pound.cats as cat
where pound.location.name='Anytown' and cat.meanness > 5
2006-03-22 15:18:18,140 DEBUG [null main] ast.QueryTranslatorImpl
(QueryTranslatorImpl.java:252) - --- HQL AST ---
\-[QUERY] 'query'
+-[SELECT_FROM] 'SELECT_FROM'
| +-[FROM] 'from'
| | +-[RANGE] 'RANGE'
| | | +-[DOT] '.'
| | | | +-[DOT] '.'
| | | | | +-[DOT] '.'
| | | | | | +-[DOT] '.'
| | | | | | | +-[IDENT] 'com'
| | | | | | | \-[IDENT] 'i2rd'
| | | | | | \-[IDENT] 'occasio'
| | | | | \-[IDENT] 'test'
| | | | \-[IDENT] 'BrokenHibernateDowncast$Pound'
| | | \-[ALIAS] 'pound'
| | \-[JOIN] 'join'
| | +-[INNER] 'inner'
| | +-[DOT] '.'
| | | +-[IDENT] 'pound'
| | | \-[IDENT] 'cats'
| | \-[ALIAS] 'cat'
| \-[SELECT] 'select'
| \-[DOT] '.'
| +-[DOT] '.'
| | +-[IDENT] 'pound'
| | \-[IDENT] 'location'
| \-[IDENT] 'state'
\-[WHERE] 'where'
\-[AND] 'and'
+-[EQ] '='
| +-[DOT] '.'
| | +-[DOT] '.'
| | | +-[IDENT] 'pound'
| | | \-[IDENT] 'location'
| | \-[IDENT] 'name'
| \-[QUOTED_STRING] ''Anytown''
\-[GT] '>'
+-[DOT] '.'
| +-[IDENT] 'cat'
| \-[IDENT] 'meanness'
\-[NUM_INT] '5'
2006-03-22 15:18:18,143 DEBUG [null main] ast.ErrorCounter (ErrorCounter.java:68) -
throwQueryException() : no errors
2006-03-22 15:18:18,143 DEBUG [null main] antlr.HqlSqlBaseWalker
(HqlSqlBaseWalker.java:111) - select << begin [level=1, statement=select]
2006-03-22 15:18:18,152 DEBUG [null main] tree.FromElement (FromElement.java:104) -
FromClause{level=1} : com.i2rd.occasio.test.BrokenHibernateDowncast$Pound (pound) ->
brokenhibe0_
2006-03-22 15:18:18,153 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound -> brokenhibe0_.id
2006-03-22 15:18:18,155 DEBUG [null main] tree.DotNode (DotNode.java:541) -
getDataType() : cats ->
org.hibernate.type.SetType(com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.cats)
2006-03-22 15:18:18,156 DEBUG [null main] tree.FromElementFactory
(FromElementFactory.java:368) - createManyToMany() : path = pound.cats role =
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.cats associatedEntityName =
com.i2rd.occasio.test.BrokenHibernateDowncast$Cat
2006-03-22 15:18:18,156 DEBUG [null main] tree.FromElement (FromElement.java:104) -
FromClause{level=1} : com.i2rd.occasio.test.BrokenHibernateDowncast$Cat (cat) ->
brokenhibe2_
2006-03-22 15:18:18,157 DEBUG [null main] tree.FromClause (FromClause.java:218) -
addJoinByPathMap() : pound.cats -> cat brokenhibe2_
2006-03-22 15:18:18,158 DEBUG [null main] tree.DotNode (DotNode.java:265) -
dereferenceCollection() : Created new FROM element for pound.cats : pound_cat brokenhibe2_
2006-03-22 15:18:18,158 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound.cats -> .
2006-03-22 15:18:18,164 DEBUG [null main] ast.HqlSqlWalker (HqlSqlWalker.java:327) -
createFromJoinElement() : -- join tree --
\-[JOIN_FRAGMENT] FromElement: 'pound_cat brokenhibe2_'
FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy
properties,classAlias=cat,role=com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.cats,tableName=cat,tableAlias=brokenhibe2_,origin=pound
brokenhibe0_,colums={brokenhibe0_.id
,className=com.i2rd.occasio.test.BrokenHibernateDowncast$Cat}}
2006-03-22 15:18:18,165 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound -> brokenhibe0_.id
2006-03-22 15:18:18,168 DEBUG [null main] tree.DotNode (DotNode.java:541) -
getDataType() : location ->
org.hibernate.type.ManyToOneType(com.i2rd.occasio.test.BrokenHibernateDowncast$City)
2006-03-22 15:18:18,169 DEBUG [null main] tree.DotNode (DotNode.java:348) -
dereferenceEntityJoin() : generating join for location in
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound {no alias} parent = [ ( . ( .
brokenhibe0_.id location ) state ) ]
2006-03-22 15:18:18,169 DEBUG [null main] tree.FromElement (FromElement.java:104) -
FromClause{level=1} : com.i2rd.occasio.test.BrokenHibernateDowncast$City (no alias) ->
brokenhibe3_
2006-03-22 15:18:18,170 DEBUG [null main] tree.FromClause (FromClause.java:218) -
addJoinByPathMap() : pound.location -> city brokenhibe3_
2006-03-22 15:18:18,170 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound.location -> brokenhibe0_.location_id
2006-03-22 15:18:18,171 DEBUG [null main] tree.DotNode (DotNode.java:541) -
getDataType() : state -> org.hibernate.type.StringType@ea3932
2006-03-22 15:18:18,172 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound.location.state -> brokenhibe3_.state
2006-03-22 15:18:18,173 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound -> brokenhibe0_.id
2006-03-22 15:18:18,174 DEBUG [null main] tree.DotNode (DotNode.java:541) -
getDataType() : location ->
org.hibernate.type.ManyToOneType(com.i2rd.occasio.test.BrokenHibernateDowncast$City)
2006-03-22 15:18:18,174 DEBUG [null main] tree.DotNode (DotNode.java:348) -
dereferenceEntityJoin() : generating join for location in
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound {no alias} parent = [ ( . ( .
brokenhibe0_.id location ) name ) ]
2006-03-22 15:18:18,175 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound.location -> brokenhibe0_.location_id
2006-03-22 15:18:18,176 DEBUG [null main] tree.DotNode (DotNode.java:541) -
getDataType() : name -> org.hibernate.type.StringType@ea3932
2006-03-22 15:18:18,176 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : pound.location.name -> brokenhibe3_.name
2006-03-22 15:18:18,177 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : cat -> brokenhibe2_.id
2006-03-22 15:18:18,178 DEBUG [null main] tree.DotNode (DotNode.java:541) -
getDataType() : meanness -> org.hibernate.type.IntegerType@170ec24
2006-03-22 15:18:18,180 DEBUG [null main] tree.FromReferenceNode
(FromReferenceNode.java:51) - Resolved : cat.meanness -> brokenhibe2_2_.meanness
2006-03-22 15:18:18,180 DEBUG [null main] antlr.HqlSqlBaseWalker
(HqlSqlBaseWalker.java:117) - select : finishing up [level=1, statement=select]
2006-03-22 15:18:18,181 DEBUG [null main] ast.HqlSqlWalker (HqlSqlWalker.java:511) -
processQuery() : ( SELECT ( {select clause} ( brokenhibe3_.state (
brokenhibe0_.location_id brokenhibe0_.id location ) state ) ) ( FromClause{level=1} (
pound brokenhibe0_ pound_cat brokenhibe2_ city brokenhibe3_ ) ) ( where ( and ( = (
brokenhibe3_.name ( brokenhibe0_.location_id brokenhibe0_.id location ) name )
'Anytown' ) ( > ( brokenhibe2_2_.meanness brokenhibe2_.id meanness ) 5 ) ) ) )
2006-03-22 15:18:18,186 DEBUG [null main] util.SyntheticAndFactory
(SyntheticAndFactory.java:58) - Using WHERE fragment
[brokenhibe0_.location_id=brokenhibe3_.id]
2006-03-22 15:18:18,186 DEBUG [null main] util.JoinProcessor (JoinProcessor.java:128) -
Using FROM fragment [inner join pound_cat cats1_ on brokenhibe0_.id=cats1_.pound_id inner
join cat brokenhibe2_ on cats1_.cats_id=brokenhibe2_.id]
2006-03-22 15:18:18,187 DEBUG [null main] util.JoinProcessor (JoinProcessor.java:128) -
Using FROM fragment [pound brokenhibe0_]
2006-03-22 15:18:18,187 DEBUG [null main] antlr.HqlSqlBaseWalker
(HqlSqlBaseWalker.java:123) - select >> end [level=1, statement=select]
2006-03-22 15:18:18,193 DEBUG [null main] ast.QueryTranslatorImpl
(QueryTranslatorImpl.java:222) - --- SQL AST ---
\-[SELECT] QueryNode: 'SELECT' querySpaces (pound_cat,pound,cat,city)
+-[SELECT_CLAUSE] SelectClause: '{select clause}'
| +-[DOT] DotNode: 'brokenhibe3_.state'
{propertyName=state,dereferenceType=4,propertyPath=state,path=pound.location.state,tableAlias=brokenhibe3_,className=com.i2rd.occasio.test.BrokenHibernateDowncast$City,classAlias=null}
| | +-[DOT] DotNode: 'brokenhibe0_.location_id'
{propertyName=location,dereferenceType=1,propertyPath=location,path=pound.location,tableAlias=brokenhibe3_,className=com.i2rd.occasio.test.BrokenHibernateDowncast$City,classAlias=null}
| | | +-[ALIAS_REF] IdentNode: 'brokenhibe0_.id' {alias=pound,
className=com.i2rd.occasio.test.BrokenHibernateDowncast$Pound, tableAlias=brokenhibe0_}
| | | \-[IDENT] IdentNode: 'location' {originalText=location}
| | \-[IDENT] IdentNode: 'state' {originalText=state}
| \-[SELECT_COLUMNS] SqlNode: ' as col_0_0_'
+-[FROM] FromClause: 'from' FromClause{level=1, fromElementCounter=3,
fromElements=3, fromElementByClassAlias=[pound, cat, null],
fromElementByTableAlias=[brokenhibe3_, brokenhibe0_, brokenhibe2_],
fromElementsByPath=[pound.cats, pound.location], collectionJoinFromElementsByPath=[],
impliedElements=[]}
| \-[FROM_FRAGMENT] FromElement: 'pound brokenhibe0_'
FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy
properties,classAlias=pound,role=null,tableName=pound,tableAlias=brokenhibe0_,origin=null,colums={,className=com.i2rd.occasio.test.BrokenHibernateDowncast$Pound}}
| +-[JOIN_FRAGMENT] FromElement: 'inner join pound_cat cats1_ on
brokenhibe0_.id=cats1_.pound_id inner join cat brokenhibe2_ on
cats1_.cats_id=brokenhibe2_.id' FromElement{explicit,not a collection join,not a fetch
join,fetch non-lazy
properties,classAlias=cat,role=com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.cats,tableName=cat,tableAlias=brokenhibe2_,origin=pound
brokenhibe0_,colums={brokenhibe0_.id
,className=com.i2rd.occasio.test.BrokenHibernateDowncast$Cat}}
| \-[FROM_FRAGMENT] ImpliedFromElement: 'city brokenhibe3_'
ImpliedFromElement{implied,not a collection join,not a fetch join,fetch non-lazy
properties,classAlias=null,role=null,tableName=city,tableAlias=brokenhibe3_,origin=pound
brokenhibe0_,colums={brokenhibe0_.location_id
,className=com.i2rd.occasio.test.BrokenHibernateDowncast$City}}
\-[WHERE] SqlNode: 'where'
+-[THETA_JOINS] SqlNode: '{theta joins}'
| \-[SQL_TOKEN] SqlFragment: 'brokenhibe0_.location_id=brokenhibe3_.id'
\-[AND] SqlNode: 'and'
+-[EQ] BinaryLogicOperatorNode: '='
| +-[DOT] DotNode: 'brokenhibe3_.name'
{propertyName=name,dereferenceType=4,propertyPath=name,path=pound.location.name,tableAlias=brokenhibe3_,className=com.i2rd.occasio.test.BrokenHibernateDowncast$City,classAlias=null}
| | +-[DOT] DotNode: 'brokenhibe0_.location_id'
{propertyName=location,dereferenceType=1,propertyPath=location,path=pound.location,tableAlias=brokenhibe3_,className=com.i2rd.occasio.test.BrokenHibernateDowncast$City,classAlias=null}
| | | +-[ALIAS_REF] IdentNode: 'brokenhibe0_.id' {alias=pound,
className=com.i2rd.occasio.test.BrokenHibernateDowncast$Pound, tableAlias=brokenhibe0_}
| | | \-[IDENT] IdentNode: 'location' {originalText=location}
| | \-[IDENT] IdentNode: 'name' {originalText=name}
| \-[QUOTED_STRING] LiteralNode: ''Anytown''
\-[GT] BinaryLogicOperatorNode: '>'
+-[DOT] DotNode: 'brokenhibe2_2_.meanness'
{propertyName=meanness,dereferenceType=4,propertyPath=meanness,path=cat.meanness,tableAlias=brokenhibe2_,className=com.i2rd.occasio.test.BrokenHibernateDowncast$Cat,classAlias=cat}
| +-[ALIAS_REF] IdentNode: 'brokenhibe2_.id' {alias=cat,
className=com.i2rd.occasio.test.BrokenHibernateDowncast$Cat, tableAlias=brokenhibe2_}
| \-[IDENT] IdentNode: 'meanness' {originalText=meanness}
\-[NUM_INT] LiteralNode: '5'
2006-03-22 15:18:18,197 DEBUG [null main] ast.ErrorCounter (ErrorCounter.java:68) -
throwQueryException() : no errors
2006-03-22 15:18:18,198 DEBUG [null main] ast.QueryTranslatorImpl
(QueryTranslatorImpl.java:206) - HQL: select pound.location.state from
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound as pound inner join pound.cats as cat
where pound.location.name='Anytown' and cat.meanness > 5
2006-03-22 15:18:18,198 DEBUG [null main] ast.QueryTranslatorImpl
(QueryTranslatorImpl.java:207) - SQL: select brokenhibe3_.state as col_0_0_ from pound
brokenhibe0_ inner join pound_cat cats1_ on brokenhibe0_.id=cats1_.pound_id inner join cat
brokenhibe2_ on cats1_.cats_id=brokenhibe2_.id, city brokenhibe3_ where
brokenhibe0_.location_id=brokenhibe3_.id and brokenhibe3_.name='Anytown' and
brokenhibe2_2_.meanness>5
2006-03-22 15:18:18,199 DEBUG [null main] ast.ErrorCounter (ErrorCounter.java:68) -
throwQueryException() : no errors
2006-03-22 15:18:18,200 DEBUG [null main] query.HQLQueryPlan (HQLQueryPlan.java:219) -
HQL param location recognition took 0 mills (select pound.location.state from
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound as pound inner join pound.cats as cat
where pound.location.name='Anytown' and cat.meanness > 5)
2006-03-22 15:18:18,201 DEBUG [null main] query.QueryPlanCache (QueryPlanCache.java:75)
- located HQL query plan in cache (select pound.location.state from
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound as pound inner join pound.cats as cat
where pound.location.name='Anytown' and cat.meanness > 5)
2006-03-22 15:18:18,202 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:58) - flushing session
2006-03-22 15:18:18,202 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:111) - processing flush-time cascades
2006-03-22 15:18:18,202 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:153) - dirty checking collections
2006-03-22 15:18:18,203 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:170) - Flushing entities and processing referenced
collections
2006-03-22 15:18:18,204 DEBUG [null main] engine.Collections (Collections.java:176) -
Collection found: [com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.cats#1], was:
[com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.cats#1] (initialized)
2006-03-22 15:18:18,204 DEBUG [null main] engine.Collections (Collections.java:176) -
Collection found: [com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.dogs#1], was:
[com.i2rd.occasio.test.BrokenHibernateDowncast$Pound.dogs#1] (initialized)
2006-03-22 15:18:18,205 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:209) - Processing unreferenced collections
2006-03-22 15:18:18,206 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:223) - Scheduling collection
removes/(re)creates/updates
2006-03-22 15:18:18,207 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:85) - Flushed: 0 insertions, 0 updates, 0 deletions to
6 objects
2006-03-22 15:18:18,207 DEBUG [null main] def.AbstractFlushingEventListener
(AbstractFlushingEventListener.java:91) - Flushed: 0 (re)creations, 0 updates, 0 removals
to 2 collections
2006-03-22 15:18:18,208 DEBUG [null main] pretty.Printer (Printer.java:83) - listing
entities:
2006-03-22 15:18:18,209 DEBUG [null main] pretty.Printer (Printer.java:90) -
com.i2rd.occasio.test.BrokenHibernateDowncast$Pound{cats=[com.i2rd.occasio.test.BrokenHibernateDowncast$Cat#2,
com.i2rd.occasio.test.BrokenHibernateDowncast$Cat#1],
dogs=[com.i2rd.occasio.test.BrokenHibernateDowncast$Dog#2,
com.i2rd.occasio.test.BrokenHibernateDowncast$Dog#1],
location=com.i2rd.occasio.test.BrokenHibernateDowncast$City#1, id=1}
2006-03-22 15:18:18,209 DEBUG [null main] pretty.Printer (Printer.java:90) -
com.i2rd.occasio.test.BrokenHibernateDowncast$LargeDog{largeness=100, name=max, id=2}
2006-03-22 15:18:18,210 DEBUG [null main] pretty.Printer (Printer.java:90) -
com.i2rd.occasio.test.BrokenHibernateDowncast$DomesticCat{region=Midwest USA,
name=charley, id=1}
2006-03-22 15:18:18,210 DEBUG [null main] pretty.Printer (Printer.java:90) -
com.i2rd.occasio.test.BrokenHibernateDowncast$Bobcat{meanness=10, name=bobby, id=2}
2006-03-22 15:18:18,211 DEBUG [null main] pretty.Printer (Printer.java:90) -
com.i2rd.occasio.test.BrokenHibernateDowncast$ToyDog{tinyness=1, name=fifi, id=1}
2006-03-22 15:18:18,211 DEBUG [null main] pretty.Printer (Printer.java:90) -
com.i2rd.occasio.test.BrokenHibernateDowncast$City{state=NE, name=Anytown, id=1}
2006-03-22 15:18:18,211 DEBUG [null main] def.DefaultAutoFlushEventListener
(DefaultAutoFlushEventListener.java:53) - Dont need to execute flush
2006-03-22 15:18:18,212 DEBUG [null main] query.HQLQueryPlan (HQLQueryPlan.java:148) -
find: select pound.location.state from com.i2rd.occasio.test.BrokenHibernateDowncast$Pound
as pound inner join pound.cats as cat where pound.location.name='Anytown' and
cat.meanness > 5
2006-03-22 15:18:18,212 DEBUG [null main] engine.QueryParameters
(QueryParameters.java:262) - named parameters: {}
2006-03-22 15:18:18,212 DEBUG [null main] jdbc.AbstractBatcher
(AbstractBatcher.java:311) - about to open PreparedStatement (open PreparedStatements: 0,
globally: 0)
2006-03-22 15:18:18,214 DEBUG [null main] jdbc.AbstractBatcher
(AbstractBatcher.java:346) -
select
brokenhibe3_.state as col_0_0_
from
pound brokenhibe0_
inner join
pound_cat cats1_
on brokenhibe0_.id=cats1_.pound_id
inner join
cat brokenhibe2_
on cats1_.cats_id=brokenhibe2_.id,
city brokenhibe3_
where
brokenhibe0_.location_id=brokenhibe3_.id
and brokenhibe3_.name='Anytown'
and brokenhibe2_2_.meanness>5
Hibernate:
select
brokenhibe3_.state as col_0_0_
from
pound brokenhibe0_
inner join
pound_cat cats1_
on brokenhibe0_.id=cats1_.pound_id
inner join
cat brokenhibe2_
on cats1_.cats_id=brokenhibe2_.id,
city brokenhibe3_
where
brokenhibe0_.location_id=brokenhibe3_.id
and brokenhibe3_.name='Anytown'
and brokenhibe2_2_.meanness>5
2006-03-22 15:18:18,215 DEBUG [null main] jdbc.AbstractBatcher
(AbstractBatcher.java:424) - preparing statement
2006-03-22 15:18:18,237 DEBUG [null main] jdbc.AbstractBatcher
(AbstractBatcher.java:319) - about to close PreparedStatement (open PreparedStatements: 1,
globally: 1)
2006-03-22 15:18:18,239 DEBUG [null main] jdbc.AbstractBatcher
(AbstractBatcher.java:470) - closing statement
2006-03-22 15:18:18,252 DEBUG [null main] util.JDBCExceptionReporter
(JDBCExceptionReporter.java:63) - could not execute query [select brokenhibe3_.state as
col_0_0_ from pound brokenhibe0_ inner join pound_cat cats1_ on
brokenhibe0_.id=cats1_.pound_id inner join cat brokenhibe2_ on
cats1_.cats_id=brokenhibe2_.id, city brokenhibe3_ where
brokenhibe0_.location_id=brokenhibe3_.id and brokenhibe3_.name='Anytown' and
brokenhibe2_2_.meanness>5]
org.postgresql.util.PSQLException: ERROR: missing FROM-clause entry for table
"brokenhibe2_2_"
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:437)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:257)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at
com.i2rd.occasio.test.BrokenHibernateDowncast.main(BrokenHibernateDowncast.java:181)
2006-03-22 15:18:18,253 WARN [null main] util.JDBCExceptionReporter
(JDBCExceptionReporter.java:71) - SQL Error: 0, SQLState: 42P01
2006-03-22 15:18:18,254 ERROR [null main] util.JDBCExceptionReporter
(JDBCExceptionReporter.java:72) - ERROR: missing FROM-clause entry for table
"brokenhibe2_2_"
2006-03-22 15:18:18,255 DEBUG [null main] jdbc.JDBCContext (JDBCContext.java:217) -
after autocommit
2006-03-22 15:18:18,255 DEBUG [null main] jdbc.ConnectionManager
(ConnectionManager.java:296) - transaction completed on session with on_close connection
release mode; be sure to close the session to release JDBC resources!
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could
not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2148)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at
com.i2rd.occasio.test.BrokenHibernateDowncast.main(BrokenHibernateDowncast.java:181)
Caused by: org.postgresql.util.PSQLException: ERROR: missing FROM-clause entry for table
"brokenhibe2_2_"
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:437)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:257)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
... 8 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira