-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Wrong order inner joins
PostPosted: Sat Nov 18, 2006 7:16 pm 
Newbie

Joined: Tue May 16, 2006 5:43 am
Posts: 5
I have the following problem. It seems to me, it is the bug in Hibernate, but I am not sure. Please help.

EJB-QL:
SELECT ae.alert.name, ae.alert.priority, ae.readBy, ae.resource.id
FROM AlertEvent ae
WHERE ae.resource.id = :id0


Hibernate generates the following SQL:

Code:
select alert1_1_.name as col_0_0_, alert1_.priority as col_1_0_, alertevent0_.readBy_id as col_2_0_, alertevent0_.resource_id as col_3_0_, dispatcher3_.id as id3_, dispatcher3_1_.name as name3_, dispatcher3_1_.deleted as deleted3_, dispatcher3_1_.userName as userName3_, dispatcher3_1_.group_id as group6_3_, dispatcher3_1_.userPassword as userPass5_3_
from AlertEvents alertevent0_, Alerts alert1_ inner join ResourceConsumers alert1_1_ on alert1_.id=alert1_1_.id inner join Dispatchers dispatcher3_ on alertevent0_.readBy_id=dispatcher3_.id inner join Users dispatcher3_1_ on dispatcher3_.id=dispatcher3_1_.id
where alertevent0_.alert_id=alert1_.id
and alertevent0_.resource_id=?


SQL is invalid for PostgreSQL 8.1 and MySQL 5.0. For Oracle 10, SQL is valid, but it returns wrong results.

Here is the message from PostgreSQL:
invalid reference to FROM-clause entry for table "alertevent0_"

The problem is that SQL has to be generated like this (different order of inner joins):

Code:
select alert1_1_.name as col_0_0_, alert1_.priority as col_1_0_, alertevent0_.readBy_id as col_2_0_, alertevent0_.resource_id as col_3_0_, dispatcher3_.id as id3_, dispatcher3_1_.name as name3_, dispatcher3_1_.deleted as deleted3_, dispatcher3_1_.userName as userName3_, dispatcher3_1_.group_id as group6_3_, dispatcher3_1_.userPassword as userPass5_3_
from AlertEvents alertevent0_ [b]inner join Dispatchers dispatcher3_ on alertevent0_.readBy_id=dispatcher3_.id[/b] inner join Users dispatcher3_1_ on dispatcher3_.id=dispatcher3_1_.id, Alerts alert1_ inner join ResourceConsumers alert1_1_ on alert1_.id=alert1_1_.id
where alertevent0_.alert_id=alert1_.id
and alertevent0_.resource_id=?


I am using NEW Hibernate 3.2.1 and Annotations 3.2.0 and EntityManager 3.2.0
The problem was also in Hibernate 3.2.0.

Here is the stack trace:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:647)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:73)
at com.gcware.itistrack.services.ReportService.run(ReportService.java:531)
at com.gcware.itistrack.services.delegates.ReportServiceDelegate.run(ReportServiceDelegate.java:166)
at com.gcware.itistrack.services.ReportTest.runAlert(ReportTest.java:317)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: 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:2214)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:388)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)
... 23 more
Caused by: org.postgresql.util.PSQLException: ERROR: invalid reference to FROM-clause entry for table "alertevent0_"
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:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1778)
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:2211)
... 31 more

Code:
If I remove "ae.readBy" from SELECT than SQL is valid.

select alert1_1_.name as col_0_0_, alert1_.priority as col_1_0_, alertevent0_.resource_id as col_2_0_ from AlertEvents alertevent0_, Alerts alert1_ inner join ResourceConsumers alert1_1_ on alert1_.id=alert1_1_.id where alertevent0_.alert_id=alert1_.id and alertevent0_.resource_id=?


Now here is the list of my relations, which are important for this problem
AlertEvent => Resource (@ManyToOne)
AlertEvent => Alert (@ManyToOne)
AlertEvent => Dispatcher (@ManyToOne)
Alert is subclass of ResourceConsumer (@Inheritance(strategy=JOINED))
Dispatcher is subclass of User (@Inheritance(strategy=JOINED))
Name and Priority are not relations.

This issue seems to be similar to the bug HHH-1631.


And finally full log:

DEBUG 18-11 23:54:18,000 (QueryPlanCache.java:getHQLQueryPlan:70) - unable to locate HQL query plan in cache; generating (SELECT ae.alert.name, ae.alert.priority, ae.readBy, ae.resource.id FROM AlertEvent ae WHERE ae.resource.id = :id0)
DEBUG 18-11 23:54:18,000 (QueryTranslatorImpl.java:parse:246) - parse() - HQL: SELECT ae.alert.name, ae.alert.priority, ae.readBy, ae.resource.id FROM com.gcware.itistrack.alerting.AlertEvent ae WHERE ae.resource.id = :id0
DEBUG 18-11 23:54:18,015 (QueryTranslatorImpl.java:showHqlAst:266) - --- HQL AST ---
\-[QUERY] 'query'
+-[SELECT_FROM] 'SELECT_FROM'
| +-[FROM] 'FROM'
| | \-[RANGE] 'RANGE'
| | +-[DOT] '.'
| | | +-[DOT] '.'
| | | | +-[DOT] '.'
| | | | | +-[DOT] '.'
| | | | | | +-[IDENT] 'com'
| | | | | | \-[IDENT] 'gcware'
| | | | | \-[IDENT] 'itistrack'
| | | | \-[IDENT] 'alerting'
| | | \-[IDENT] 'AlertEvent'
| | \-[ALIAS] 'ae'
| \-[SELECT] 'SELECT'
| +-[DOT] '.'
| | +-[DOT] '.'
| | | +-[IDENT] 'ae'
| | | \-[IDENT] 'alert'
| | \-[IDENT] 'name'
| +-[DOT] '.'
| | +-[DOT] '.'
| | | +-[IDENT] 'ae'
| | | \-[IDENT] 'alert'
| | \-[IDENT] 'priority'
| +-[DOT] '.'
| | +-[IDENT] 'ae'
| | \-[IDENT] 'readBy'
| \-[DOT] '.'
| +-[DOT] '.'
| | +-[IDENT] 'ae'
| | \-[IDENT] 'resource'
| \-[IDENT] 'id'
\-[WHERE] 'WHERE'
\-[EQ] '='
+-[DOT] '.'
| +-[DOT] '.'
| | +-[IDENT] 'ae'
| | \-[IDENT] 'resource'
| \-[IDENT] 'id'
\-[COLON] ':'
\-[IDENT] 'id0'

DEBUG 18-11 23:54:18,031 (ErrorCounter.java:throwQueryException:68) - throwQueryException() : no errors
DEBUG 18-11 23:54:18,031 (HqlSqlBaseWalker.java:beforeStatement:111) - select << begin [level=1, statement=select]
DEBUG 18-11 23:54:18,031 (FromElement.java:doInitialize:109) - FromClause{level=1} : com.gcware.itistrack.alerting.AlertEvent (ae) -> alertevent0_
DEBUG 18-11 23:54:18,031 (FromReferenceNode.java:setResolved:51) - Resolved : ae -> alertevent0_.id
DEBUG 18-11 23:54:18,031 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> alert (class)]
DEBUG 18-11 23:54:18,031 (DotNode.java:getDataType:507) - getDataType() : alert -> org.hibernate.type.ManyToOneType(com.gcware.itistrack.alerting.Alert)
DEBUG 18-11 23:54:18,031 (DotNode.java:dereferenceEntityJoin:329) - dereferenceEntityJoin() : generating join for alert in com.gcware.itistrack.alerting.AlertEvent {no alias} parent = [ ( . ( . alertevent0_.id alert ) name ) ]
DEBUG 18-11 23:54:18,031 (FromElement.java:doInitialize:109) - FromClause{level=1} : com.gcware.itistrack.alerting.Alert (no alias) -> alert1_
DEBUG 18-11 23:54:18,031 (FromClause.java:addJoinByPathMap:233) - addJoinByPathMap() : ae.alert -> Alerts alert1_
DEBUG 18-11 23:54:18,031 (FromElementFactory.java:createEntityJoin:245) - createEntityJoin() : Implied multi-table entity join
DEBUG 18-11 23:54:18,031 (FromReferenceNode.java:setResolved:51) - Resolved : ae.alert -> alertevent0_.alert_id
DEBUG 18-11 23:54:18,031 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.Alert (null) -> name (superclass)]
DEBUG 18-11 23:54:18,031 (DotNode.java:getDataType:507) - getDataType() : name -> org.hibernate.type.StringType@f12b72
DEBUG 18-11 23:54:18,031 (FromReferenceNode.java:setResolved:51) - Resolved : ae.alert.name -> alert1_1_.name
DEBUG 18-11 23:54:18,031 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.Alert (null) -> name (superclass)]
DEBUG 18-11 23:54:18,031 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> alert (class)]
DEBUG 18-11 23:54:18,031 (FromReferenceNode.java:setResolved:51) - Resolved : ae -> alertevent0_.id
DEBUG 18-11 23:54:18,031 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> alert (class)]
DEBUG 18-11 23:54:18,031 (DotNode.java:getDataType:507) - getDataType() : alert -> org.hibernate.type.ManyToOneType(com.gcware.itistrack.alerting.Alert)
DEBUG 18-11 23:54:18,031 (DotNode.java:dereferenceEntityJoin:329) - dereferenceEntityJoin() : generating join for alert in com.gcware.itistrack.alerting.AlertEvent {no alias} parent = [ ( . ( . alertevent0_.id alert ) priority ) ]
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae.alert -> alertevent0_.alert_id
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.Alert (null) -> priority (class)]
DEBUG 18-11 23:54:18,046 (DotNode.java:getDataType:507) - getDataType() : priority -> org.hibernate.type.CustomType@15b6aad
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae.alert.priority -> alert1_.priority
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.Alert (null) -> priority (class)]
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> alert (class)]
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae -> alertevent0_.id
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> readBy (class)]
DEBUG 18-11 23:54:18,046 (DotNode.java:getDataType:507) - getDataType() : readBy -> org.hibernate.type.ManyToOneType(com.gcware.itistrack.core.Dispatcher)
DEBUG 18-11 23:54:18,046 (DotNode.java:dereferenceEntityJoin:329) - dereferenceEntityJoin() : generating join for readBy in com.gcware.itistrack.alerting.AlertEvent {no alias} parent = [ {null} ]
DEBUG 18-11 23:54:18,046 (FromElement.java:doInitialize:109) - FromClause{level=1} : com.gcware.itistrack.core.Dispatcher (no alias) -> dispatcher3_
DEBUG 18-11 23:54:18,046 (FromClause.java:addJoinByPathMap:233) - addJoinByPathMap() : ae.readBy -> Dispatchers dispatcher3_
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae.readBy -> alertevent0_.readBy_id
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> readBy (class)]
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae -> alertevent0_.id
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> resource (class)]
DEBUG 18-11 23:54:18,046 (DotNode.java:getDataType:507) - getDataType() : resource -> org.hibernate.type.ManyToOneType(com.gcware.itistrack.core.Resource)
DEBUG 18-11 23:54:18,046 (DotNode.java:dereferenceEntityIdentifier:463) - dereferenceShortcut() : property id in com.gcware.itistrack.alerting.AlertEvent does not require a join.
DEBUG 18-11 23:54:18,046 (DotNode.java:setPropertyNameAndPath:487) - Unresolved property path is now 'resource.id'
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae.resource -> alertevent0_.resource_id
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> id (class)]
DEBUG 18-11 23:54:18,046 (DotNode.java:getDataType:507) - getDataType() : resource.id -> org.hibernate.type.LongType@1f1e666
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae.resource.id -> alertevent0_.resource_id
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> id (class)]
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> resource (class)]
DEBUG 18-11 23:54:18,046 (FromReferenceNode.java:setResolved:51) - Resolved : ae -> alertevent0_.id
DEBUG 18-11 23:54:18,046 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> resource (class)]
DEBUG 18-11 23:54:18,046 (DotNode.java:getDataType:507) - getDataType() : resource -> org.hibernate.type.ManyToOneType(com.gcware.itistrack.core.Resource)
DEBUG 18-11 23:54:18,046 (DotNode.java:dereferenceEntityIdentifier:463) - dereferenceShortcut() : property id in com.gcware.itistrack.alerting.AlertEvent does not require a join.
DEBUG 18-11 23:54:18,062 (DotNode.java:setPropertyNameAndPath:487) - Unresolved property path is now 'resource.id'
DEBUG 18-11 23:54:18,062 (FromReferenceNode.java:setResolved:51) - Resolved : ae.resource -> alertevent0_.resource_id
DEBUG 18-11 23:54:18,062 (FromElement.java:handlePropertyBeingDereferenced:532) - handling property dereference [com.gcware.itistrack.alerting.AlertEvent (ae) -> id (class)]
DEBUG 18-11 23:54:18,062 (DotNode.java:getDataType:507) - getDataType() : resource.id -> org.hibernate.type.LongType@1f1e666
DEBUG 18-11 23:54:18,062 (FromReferenceNode.java:setResolved:51) - Resolved : ae.resource.id -> alertevent0_.resource_id
DEBUG 18-11 23:54:18,062 (HqlSqlBaseWalker.java:beforeStatementCompletion:117) - select : finishing up [level=1, statement=select]
DEBUG 18-11 23:54:18,062 (HqlSqlWalker.java:processQuery:508) - processQuery() : ( SELECT ( {select clause} ( alert1_1_.name ( alertevent0_.alert_id alertevent0_.id alert ) name ) ( alert1_.priority ( alertevent0_.alert_id alertevent0_.id alert ) priority ) ( alertevent0_.readBy_id alertevent0_.id readBy ) ( alertevent0_.resource_id ( alertevent0_.resource_id alertevent0_.id resource ) id ) ) ( FromClause{level=1} ( AlertEvents alertevent0_ Alerts alert1_ Dispatchers dispatcher3_ ) ) ( WHERE ( = ( alertevent0_.resource_id ( alertevent0_.resource_id alertevent0_.id resource ) id ) ? ) ) )
DEBUG 18-11 23:54:18,062 (JoinProcessor.java:addJoinNodes:148) - Using FROM fragment [AlertEvents alertevent0_]
DEBUG 18-11 23:54:18,062 (JoinProcessor.java:addJoinNodes:148) - Using FROM fragment [Alerts alert1_ inner join ResourceConsumers alert1_1_ on alert1_.id=alert1_1_.id]
DEBUG 18-11 23:54:18,062 (SyntheticAndFactory.java:addWhereFragment:58) - Using WHERE fragment [alertevent0_.alert_id=alert1_.id]
DEBUG 18-11 23:54:18,062 (JoinProcessor.java:addJoinNodes:148) - Using FROM fragment [inner join Dispatchers dispatcher3_ on alertevent0_.readBy_id=dispatcher3_.id inner join Users dispatcher3_1_ on dispatcher3_.id=dispatcher3_1_.id]
DEBUG 18-11 23:54:18,062 (HqlSqlBaseWalker.java:afterStatementCompletion:123) - select >> end [level=1, statement=select]
DEBUG 18-11 23:54:18,062 (QueryTranslatorImpl.java:analyze:232) - --- SQL AST ---
\-[SELECT] QueryNode: 'SELECT' querySpaces (ResourceConsumers,AlertEvents,Alerts,Users,Dispatchers)
+-[SELECT_CLAUSE] SelectClause: '{select clause}'
| +-[DOT] DotNode: 'alert1_1_.name' {propertyName=name,dereferenceType=4,propertyPath=name,path=ae.alert.name,tableAlias=alert1_,className=com.gcware.itistrack.alerting.Alert,classAlias=null}
| | +-[DOT] DotNode: 'alertevent0_.alert_id' {propertyName=alert,dereferenceType=1,propertyPath=alert,path=ae.alert,tableAlias=alert1_,className=com.gcware.itistrack.alerting.Alert,classAlias=null}
| | | +-[ALIAS_REF] IdentNode: 'alertevent0_.id' {alias=ae, className=com.gcware.itistrack.alerting.AlertEvent, tableAlias=alertevent0_}
| | | \-[IDENT] IdentNode: 'alert' {originalText=alert}
| | \-[IDENT] IdentNode: 'name' {originalText=name}
| +-[SELECT_COLUMNS] SqlNode: ' as col_0_0_'
| +-[DOT] DotNode: 'alert1_.priority' {propertyName=priority,dereferenceType=4,propertyPath=priority,path=ae.alert.priority,tableAlias=alert1_,className=com.gcware.itistrack.alerting.Alert,classAlias=null}
| | +-[DOT] DotNode: 'alertevent0_.alert_id' {propertyName=alert,dereferenceType=1,propertyPath=alert,path=ae.alert,tableAlias=alert1_,className=com.gcware.itistrack.alerting.Alert,classAlias=null}
| | | +-[ALIAS_REF] IdentNode: 'alertevent0_.id' {alias=ae, className=com.gcware.itistrack.alerting.AlertEvent, tableAlias=alertevent0_}
| | | \-[IDENT] IdentNode: 'alert' {originalText=alert}
| | \-[IDENT] IdentNode: 'priority' {originalText=priority}
| +-[SELECT_COLUMNS] SqlNode: ' as col_1_0_'
| +-[DOT] DotNode: 'alertevent0_.readBy_id' {propertyName=readBy,dereferenceType=1,propertyPath=readBy,path=ae.readBy,tableAlias=dispatcher3_,className=com.gcware.itistrack.core.Dispatcher,classAlias=null}
| | +-[ALIAS_REF] IdentNode: 'alertevent0_.id' {alias=ae, className=com.gcware.itistrack.alerting.AlertEvent, tableAlias=alertevent0_}
| | \-[IDENT] IdentNode: 'readBy' {originalText=readBy}
| +-[SELECT_COLUMNS] SqlNode: ' as col_2_0_'
| +-[DOT] DotNode: 'alertevent0_.resource_id' {propertyName=id,dereferenceType=4,propertyPath=resource.id,path=ae.resource.id,tableAlias=alertevent0_,className=com.gcware.itistrack.alerting.AlertEvent,classAlias=ae}
| | +-[DOT] DotNode: 'alertevent0_.resource_id' {propertyName=id,dereferenceType=ROOT_LEVEL,propertyPath=resource.id,path=ae.resource,tableAlias=alertevent0_,className=com.gcware.itistrack.alerting.AlertEvent,classAlias=ae}
| | | +-[ALIAS_REF] IdentNode: 'alertevent0_.id' {alias=ae, className=com.gcware.itistrack.alerting.AlertEvent, tableAlias=alertevent0_}
| | | \-[IDENT] IdentNode: 'resource' {originalText=resource}
| | \-[IDENT] IdentNode: 'id' {originalText=id}
| +-[SELECT_COLUMNS] SqlNode: ' as col_3_0_'
| +-[SQL_TOKEN] SqlFragment: 'dispatcher3_.id as id3_'
| \-[SQL_TOKEN] SqlFragment: 'dispatcher3_1_.name as name3_, dispatcher3_1_.deleted as deleted3_, dispatcher3_1_.userName as userName3_, dispatcher3_1_.group_id as group6_3_, dispatcher3_1_.userPassword as userPass5_3_'
+-[FROM] FromClause: 'FROM' FromClause{level=1, fromElementCounter=3, fromElements=3, fromElementByClassAlias=[null, ae], fromElementByTableAlias=[dispatcher3_, alertevent0_, alert1_], fromElementsByPath=[ae.readBy, ae.alert], collectionJoinFromElementsByPath=[], impliedElements=[]}
| \-[FROM_FRAGMENT] FromElement: 'AlertEvents alertevent0_' FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=ae,role=null,tableName=AlertEvents,tableAlias=alertevent0_,origin=null,colums={,className=com.gcware.itistrack.alerting.AlertEvent}}
| +-[FROM_FRAGMENT] ImpliedFromElement: 'Alerts alert1_ inner join ResourceConsumers alert1_1_ on alert1_.id=alert1_1_.id' ImpliedFromElement{implied,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName=Alerts,tableAlias=alert1_,origin=AlertEvents alertevent0_,colums={alertevent0_.alert_id ,className=com.gcware.itistrack.alerting.Alert}}
| \-[JOIN_FRAGMENT] FromElement: 'inner join Dispatchers dispatcher3_ on alertevent0_.readBy_id=dispatcher3_.id inner join Users dispatcher3_1_ on dispatcher3_.id=dispatcher3_1_.id' FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName=Dispatchers,tableAlias=dispatcher3_,origin=AlertEvents alertevent0_,colums={alertevent0_.readBy_id ,className=com.gcware.itistrack.core.Dispatcher}}
\-[WHERE] SqlNode: 'WHERE'
+-[THETA_JOINS] SqlNode: '{theta joins}'
| \-[SQL_TOKEN] SqlFragment: 'alertevent0_.alert_id=alert1_.id'
\-[EQ] BinaryLogicOperatorNode: '='
+-[DOT] DotNode: 'alertevent0_.resource_id' {propertyName=id,dereferenceType=4,propertyPath=resource.id,path=ae.resource.id,tableAlias=alertevent0_,className=com.gcware.itistrack.alerting.AlertEvent,classAlias=ae}
| +-[DOT] DotNode: 'alertevent0_.resource_id' {propertyName=id,dereferenceType=ROOT_LEVEL,propertyPath=resource.id,path=ae.resource,tableAlias=alertevent0_,className=com.gcware.itistrack.alerting.AlertEvent,classAlias=ae}
| | +-[ALIAS_REF] IdentNode: 'alertevent0_.id' {alias=ae, className=com.gcware.itistrack.alerting.AlertEvent, tableAlias=alertevent0_}
| | \-[IDENT] IdentNode: 'resource' {originalText=resource}
| \-[IDENT] IdentNode: 'id' {originalText=id}
\-[NAMED_PARAM] ParameterNode: '?' {name=id0, expectedType=org.hibernate.type.LongType@1f1e666}

DEBUG 18-11 23:54:18,062 (ErrorCounter.java:throwQueryException:68) - throwQueryException() : no errors
DEBUG 18-11 23:54:18,078 (QueryTranslatorImpl.java:generate:216) - HQL: SELECT ae.alert.name, ae.alert.priority, ae.readBy, ae.resource.id FROM com.gcware.itistrack.alerting.AlertEvent ae WHERE ae.resource.id = :id0
DEBUG 18-11 23:54:18,078 (QueryTranslatorImpl.java:generate:217) - SQL: select alert1_1_.name as col_0_0_, alert1_.priority as col_1_0_, alertevent0_.readBy_id as col_2_0_, alertevent0_.resource_id as col_3_0_, dispatcher3_.id as id3_, dispatcher3_1_.name as name3_, dispatcher3_1_.deleted as deleted3_, dispatcher3_1_.userName as userName3_, dispatcher3_1_.group_id as group6_3_, dispatcher3_1_.userPassword as userPass5_3_ from AlertEvents alertevent0_, Alerts alert1_ inner join ResourceConsumers alert1_1_ on alert1_.id=alert1_1_.id inner join Dispatchers dispatcher3_ on alertevent0_.readBy_id=dispatcher3_.id inner join Users dispatcher3_1_ on dispatcher3_.id=dispatcher3_1_.id where alertevent0_.alert_id=alert1_.id and alertevent0_.resource_id=?
DEBUG 18-11 23:54:18,078 (ErrorCounter.java:throwQueryException:68) - throwQueryException() : no errors
DEBUG 18-11 23:54:18,078 (HQLQueryPlan.java:buildParameterMetadata:269) - HQL param location recognition took 0 mills (SELECT ae.alert.name, ae.alert.priority, ae.readBy, ae.resource.id FROM AlertEvent ae WHERE ae.resource.id = :id0)
DEBUG 18-11 23:54:18,078 (QueryPlanCache.java:getHQLQueryPlan:76) - located HQL query plan in cache (SELECT ae.alert.name, ae.alert.priority, ae.readBy, ae.resource.id FROM AlertEvent ae WHERE ae.resource.id = :id0)
DEBUG 18-11 23:54:18,140 (HQLQueryPlan.java:performList:150) - find: SELECT ae.alert.name, ae.alert.priority, ae.readBy, ae.resource.id FROM AlertEvent ae WHERE ae.resource.id = :id0
DEBUG 18-11 23:54:18,140 (QueryParameters.java:traceParameters:277) - named parameters: {id0=10001}
DEBUG 18-11 23:54:18,140 (AbstractBatcher.java:logOpenPreparedStatement:358) - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
DEBUG 18-11 23:54:18,140 (ConnectionManager.java:openConnection:415) - opening JDBC connection
DEBUG 18-11 23:54:18,156 (DriverManagerConnectionProvider.java:getConnection:93) - total checked-out connections: 0
DEBUG 18-11 23:54:18,156 (DriverManagerConnectionProvider.java:getConnection:99) - using pooled JDBC connection, pool size: 0
DEBUG 18-11 23:54:18,156 (AbstractBatcher.java:log:393) -
select
alert1_1_.name as col_0_0_,
alert1_.priority as col_1_0_,
alertevent0_.readBy_id as col_2_0_,
alertevent0_.resource_id as col_3_0_,
dispatcher3_.id as id3_,
dispatcher3_1_.name as name3_,
dispatcher3_1_.deleted as deleted3_,
dispatcher3_1_.userName as userName3_,
dispatcher3_1_.group_id as group6_3_,
dispatcher3_1_.userPassword as userPass5_3_
from
AlertEvents alertevent0_,
Alerts alert1_
inner join
ResourceConsumers alert1_1_
on alert1_.id=alert1_1_.id
inner join
Dispatchers dispatcher3_
on alertevent0_.readBy_id=dispatcher3_.id
inner join
Users dispatcher3_1_
on dispatcher3_.id=dispatcher3_1_.id
where
alertevent0_.alert_id=alert1_.id
and alertevent0_.resource_id=?
Hibernate:
select
alert1_1_.name as col_0_0_,
alert1_.priority as col_1_0_,
alertevent0_.readBy_id as col_2_0_,
alertevent0_.resource_id as col_3_0_,
dispatcher3_.id as id3_,
dispatcher3_1_.name as name3_,
dispatcher3_1_.deleted as deleted3_,
dispatcher3_1_.userName as userName3_,
dispatcher3_1_.group_id as group6_3_,
dispatcher3_1_.userPassword as userPass5_3_
from
AlertEvents alertevent0_,
Alerts alert1_
inner join
ResourceConsumers alert1_1_
on alert1_.id=alert1_1_.id
inner join
Dispatchers dispatcher3_
on alertevent0_.readBy_id=dispatcher3_.id
inner join
Users dispatcher3_1_
on dispatcher3_.id=dispatcher3_1_.id
where
alertevent0_.alert_id=alert1_.id
and alertevent0_.resource_id=?
DEBUG 18-11 23:54:18,156 (AbstractBatcher.java:getPreparedStatement:476) - preparing statement
DEBUG 18-11 23:54:18,156 (NullableType.java:nullSafeSet:80) - binding '10001' to parameter: 1
DEBUG 18-11 23:54:18,156 (AbstractBatcher.java:logClosePreparedStatement:366) - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
DEBUG 18-11 23:54:18,156 (AbstractBatcher.java:closePreparedStatement:525) - closing statement
DEBUG 18-11 23:54:18,156 (ConnectionManager.java:aggressiveRelease:398) - aggressively releasing JDBC connection
DEBUG 18-11 23:54:18,156 (ConnectionManager.java:closeConnection:435) - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
DEBUG 18-11 23:54:18,156 (DriverManagerConnectionProvider.java:closeConnection:129) - returning connection to pool, pool size: 1
DEBUG 18-11 23:54:18,218 (JDBCExceptionReporter.java:logExceptions:69) - could not execute query [select alert1_1_.name as col_0_0_, alert1_.priority as col_1_0_, alertevent0_.readBy_id as col_2_0_, alertevent0_.resource_id as col_3_0_, dispatcher3_.id as id3_, dispatcher3_1_.name as name3_, dispatcher3_1_.deleted as deleted3_, dispatcher3_1_.userName as userName3_, dispatcher3_1_.group_id as group6_3_, dispatcher3_1_.userPassword as userPass5_3_ from AlertEvents alertevent0_, Alerts alert1_ inner join ResourceConsumers alert1_1_ on alert1_.id=alert1_1_.id inner join Dispatchers dispatcher3_ on alertevent0_.readBy_id=dispatcher3_.id inner join Users dispatcher3_1_ on dispatcher3_.id=dispatcher3_1_.id where alertevent0_.alert_id=alert1_.id and alertevent0_.resource_id=?]
org.postgresql.util.PSQLException: ERROR: invalid reference to FROM-clause entry for table "alertevent0_"
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:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1778)
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:2211)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:388)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)
at com.gcware.itistrack.services.ReportService.run(ReportService.java:531)
at com.gcware.itistrack.services.delegates.ReportServiceDelegate.run(ReportServiceDelegate.java:166)
at com.gcware.itistrack.services.ReportTest.runAlert(ReportTest.java:317)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
WARN 18-11 23:54:18,218 (JDBCExceptionReporter.java:logExceptions:77) - SQL Error: 0, SQLState: 42P01
ERROR 18-11 23:54:18,218 (JDBCExceptionReporter.java:logExceptions:78) - ERROR: invalid reference to FROM-clause entry for table "alertevent0_"
DEBUG 18-11 23:54:18,218 (JDBCContext.java:afterNontransactionalQuery:233) - after autocommit
DEBUG 18-11 23:54:18,218 (ConnectionManager.java:aggressiveRelease:398) - aggressively releasing JDBC connection
DEBUG 18-11 23:54:18,218 (SessionImpl.java:afterTransactionCompletion:422) - after transaction completion
DEBUG 18-11 23:54:18,218 (AbstractEntityManagerImpl.java:markAsRollback:417) - mark transaction for rollback
DEBUG 18-11 23:54:18,218 (SessionImpl.java:close:273) - closing session
DEBUG 18-11 23:54:18,218 (ConnectionManager.java:cleanup:369) - connection already null in cleanup : no action
INFO 18-11 23:54:18,234 (SessionFactoryImpl.java:close:767) - closing


Top
 Profile  
 
 Post subject: Still no response
PostPosted: Fri Nov 24, 2006 8:08 pm 
Newbie

Joined: Tue May 16, 2006 5:43 am
Posts: 5
It seems to me that no one is interested in. Should I provide some additional info to clarify this issue?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.