[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-1631) Missing table in SQL from clause that is referenced in where clause when using joined subclass
Steve Ebersole (JIRA)
noreply at atlassian.com
Wed Nov 15 18:29:06 EST 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1631?page=all ]
Steve Ebersole updated HHH-1631:
--------------------------------
Fix Version: 3.2.1
Assign To: Steve Ebersole
I have confirmed this is a bug.
Would like to get the fix into 3.2.1, but that needs to go out *soon*, lets see...
> 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 at 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 at 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 at 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.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list