Hi,
I have a HQL query that used to work with 3.0.5 and now fails with 3.2.1. I've also tried with 3.2.0, 3.1.3, and 3.1 and it fails as well.
The table layout is pretty simple. There are three tables (MACHINEMENU, MACHINEPARTMENU, MACHINESUBPARTMENU) with a one-to-many relationships between them.
Mapping excerpt:
<hibernate-mapping>
<class name="cern.oasis.domain.MachineMenuItem" table="MACHINEMENU" mutable="false">
<id name="id" column="MACHINEID" type="long">
<generator class="increment" />
</id>
<bag name="children" lazy="true" inverse="true" cascade="none" order-by="POSITION asc">
<key column="MACHINEID"></key>
<one-to-many class="cern.oasis.domain.MachinePartMenuItem" />
</bag>.....
<hibernate-mapping>
<class name="cern.oasis.domain.MachinePartMenuItem" table="MACHINEPARTMENU" mutable="false">
<id name="id" column="MACHINEPARTID" type="long">
<generator class="increment"/>
</id>
<bag name="children" lazy="true" inverse="true" cascade="none" order-by="POSITION asc">
<key column="MACHINEPARTID"></key>
<one-to-many class="cern.oasis.domain.MachineSubpartMenuItem" />
</bag>........
<hibernate-mapping>
<class name="cern.oasis.domain.MachineSubpartMenuItem" table="MACHINESUBPARTMENU"
mutable="false">
<id name="id" column="MACHINESUBPARTID" type="long">
<generator class="increment"/>
</id>
<bag name="children" lazy="true" inverse="true" cascade="none" order-by="POSITION asc">
<key column="MACHINESUBPARTID"></key>
<one-to-many class="cern.oasis.domain.SignalMenuItem" />
</bag>
<property name="name" type="java.lang.String" update="true" insert="true" column="NAME" />.....
HQL query: "select distinct mm from MachineMenuItem mm where mm.children.children.name like ? order by mm.position";
Hibernate version: fails with 3.2.1, 3.2.0, 3.1.3, 3.1. Works with 3.0.5
Name and version of the database you are using:Oracle 10g
Debug level Hibernate log excerpt (3.2.1):
16:12:58,647 [main] DEBUG org.hibernate.hql.ast.QueryTranslatorImpl - parse() - HQL: select distinct mm from cern.oasis.domain.MachineMenuItem mm where mm.children.children.name like ? order by mm.position
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.AST - --- HQL AST ---
\-[QUERY] 'query'
+-[SELECT_FROM] 'SELECT_FROM'
| +-[FROM] 'from'
| | \-[RANGE] 'RANGE'
| | +-[DOT] '.'
| | | +-[DOT] '.'
| | | | +-[DOT] '.'
| | | | | +-[IDENT] 'cern'
| | | | | \-[IDENT] 'oasis'
| | | | \-[IDENT] 'domain'
| | | \-[IDENT] 'MachineMenuItem'
| | \-[ALIAS] 'mm'
| \-[SELECT] 'select'
| +-[DISTINCT] 'distinct'
| \-[IDENT] 'mm'
+-[WHERE] 'where'
| \-[LIKE] 'like'
| +-[DOT] '.'
| | +-[DOT] '.'
| | | +-[DOT] '.'
| | | | +-[IDENT] 'mm'
| | | | \-[IDENT] 'children'
| | | \-[IDENT] 'children'
| | \-[IDENT] 'name'
| \-[PARAM] '?'
\-[ORDER] 'order'
\-[DOT] '.'
+-[IDENT] 'mm'
\-[IDENT] 'position'
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
16:12:58,657 [main] DEBUG org.hibernate.hql.antlr.HqlSqlBaseWalker - select << begin [level=1, statement=select]
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromElement - FromClause{level=1} : cern.oasis.domain.MachineMenuItem (mm) -> machinemen0_
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromReferenceNode - Resolved : mm -> machinemen0_.MACHINEID
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromReferenceNode - Resolved : mm -> machinemen0_.MACHINEID
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromElement - handling property dereference [cern.oasis.domain.MachineMenuItem (mm) -> children (class)]
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.DotNode - getDataType() : children -> org.hibernate.type.BagType(cern.oasis.domain.MachineMenuItem.children)
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromElementFactory - createEntityAssociation() : One to many - path = mm.children role = cern.oasis.domain.MachineMenuItem.children associatedEntityName = cern.oasis.domain.MachinePartMenuItem
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromElement - FromClause{level=1} : cern.oasis.domain.MachinePartMenuItem (no alias) -> children1_
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromClause - addJoinByPathMap() : mm.children -> MACHINEPARTMENU children1_
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.DotNode - dereferenceCollection() : Created new FROM element for mm.children : MACHINEPARTMENU children1_
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromReferenceNode - Resolved : mm.children -> .
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.FromElement - handling property dereference [cern.oasis.domain.MachinePartMenuItem (null) -> children (class)]
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.tree.DotNode - getDataType() : children -> org.hibernate.type.BagType(cern.oasis.domain.MachinePartMenuItem.children)
16:12:58,657 [main] ERROR org.hibernate.hql.PARSER - illegal syntax near collection: children
16:12:58,657 [main] DEBUG org.hibernate.hql.ast.ErrorCounter - illegal syntax near collection: children
illegal syntax near collection: children
at org.hibernate.hql.ast.tree.DotNode.checkLhsIsNotCollection(DotNode.java:451)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:201)
at org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:139)
at org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:459)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4326)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1212)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4041)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3669)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:824)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:822)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:818)
at cern.oasis.DAO.impl.MachineMenuItemDAOimpl.getItemsWithSignal(MachineMenuItemDAOimpl.java:38)
at cern.oasis.DAO.impl.MachineMenuDAOimpl.getSignalMenu(MachineMenuDAOimpl.java:95)
at cern.oasis.server.services.impl.MenuManagerImpl.getNextSignalMenu(MenuManagerImpl.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:266)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy8.getNextSignalMenu(Unknown Source)
at cern.oasis.server.services.impl.MenuManagerTest.testGetNextSignalMenuWithSearch(MenuManagerTest.java:172)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
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)
Debug level Hibernate log excerpt (3.0.5):
16:44:17,486 [main] DEBUG org.hibernate.hql.ast.QueryTranslatorImpl - parse() - HQL: select distinct mm from cern.oasis.domain.MachineMenuItem mm where mm.children.children.name like ? order by mm.position
16:44:17,506 [main] DEBUG org.hibernate.hql.ast.AST - --- HQL AST ---
\-[QUERY] 'query'
+-[SELECT_FROM] 'SELECT_FROM'
| +-[FROM] 'from'
| | \-[RANGE] 'RANGE'
| | +-[DOT] '.'
| | | +-[DOT] '.'
| | | | +-[DOT] '.'
| | | | | +-[IDENT] 'cern'
| | | | | \-[IDENT] 'oasis'
| | | | \-[IDENT] 'domain'
| | | \-[IDENT] 'MachineMenuItem'
| | \-[ALIAS] 'mm'
| \-[SELECT] 'select'
| +-[DISTINCT] 'distinct'
| \-[IDENT] 'mm'
+-[WHERE] 'where'
| \-[LIKE] 'like'
| +-[DOT] '.'
| | +-[DOT] '.'
| | | +-[DOT] '.'
| | | | +-[IDENT] 'mm'
| | | | \-[IDENT] 'children'
| | | \-[IDENT] 'children'
| | \-[IDENT] 'name'
| \-[PARAM] '?'
\-[ORDER] 'order'
\-[DOT] '.'
+-[IDENT] 'mm'
\-[IDENT] 'position'
16:44:17,506 [main] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
16:44:17,756 [main] DEBUG org.hibernate.hql.antlr.HqlSqlBaseWalker - query() << begin, level = 1
16:44:17,786 [main] DEBUG org.hibernate.hql.ast.FromElement - FromClause{level=1} : cern.oasis.domain.MachineMenuItem (mm) -> machinemen0_
16:44:17,786 [main] DEBUG org.hibernate.hql.ast.FromReferenceNode - Resolved : mm -> machinemen0_.MACHINEID
16:44:17,786 [main] DEBUG org.hibernate.hql.ast.FromReferenceNode - Resolved : mm -> machinemen0_.MACHINEID
16:44:17,786 [main] DEBUG org.hibernate.hql.ast.DotNode - getDataType() : children -> org.hibernate.type.BagType(cern.oasis.domain.MachineMenuItem.children)
16:44:17,806 [main] DEBUG org.hibernate.hql.ast.FromElementFactory - createEntityAssociation() : One to many - path = mm.children role = cern.oasis.domain.MachineMenuItem.children associatedEntityName = cern.oasis.domain.MachinePartMenuItem
16:44:17,806 [main] DEBUG org.hibernate.hql.ast.FromElement - FromClause{level=1} : cern.oasis.domain.MachinePartMenuItem (no alias) -> children1_
16:44:17,806 [main] DEBUG org.hibernate.hql.ast.FromClause - addJoinByPathMap() : mm.children -> MACHINEPARTMENU children1_
16:44:17,806 [main] DEBUG org.hibernate.hql.ast.DotNode - dereferenceCollection() : Created new FROM element for mm.children : MACHINEPARTMENU children1_
16:44:17,806 [main] DEBUG org.hibernate.hql.ast.FromReferenceNode - Resolved : mm.children -> .
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.DotNode - getDataType() : children -> org.hibernate.type.BagType(cern.oasis.domain.MachinePartMenuItem.children)
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.FromElementFactory - createEntityAssociation() : One to many - path = mm.children.children role = cern.oasis.domain.MachinePartMenuItem.children associatedEntityName = cern.oasis.domain.MachineSubpartMenuItem
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.FromElement - FromClause{level=1} : cern.oasis.domain.MachineSubpartMenuItem (no alias) -> children2_
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.FromClause - addJoinByPathMap() : mm.children.children -> MACHINESUBPARTMENU children2_
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.DotNode - dereferenceCollection() : Created new FROM element for mm.children.children : MACHINESUBPARTMENU children2_
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.FromReferenceNode - Resolved : mm.children.children -> .
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.DotNode - getDataType() : name -> org.hibernate.type.StringType@3e926
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.FromReferenceNode - Resolved : mm.children.children.name -> children2_.NAME
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.FromReferenceNode - Resolved : mm -> machinemen0_.MACHINEID
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.DotNode - getDataType() : position -> org.hibernate.type.LongType@95f290
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.FromReferenceNode - Resolved : mm.position -> machinemen0_.POSITION
16:44:17,816 [main] DEBUG org.hibernate.hql.antlr.HqlSqlBaseWalker - query() : finishing up , level = 1
16:44:17,816 [main] DEBUG org.hibernate.hql.ast.HqlSqlWalker - processQuery() : ( SELECT ( {select clause} distinct machinemen0_.MACHINEID ) ( FromClause{level=1} MACHINEMENU machinemen0_ MACHINEPARTMENU children1_ MACHINESUBPARTMENU children2_ ) ( where ( like ( children2_.NAME ( . ( . machinemen0_.MACHINEID children ) children ) name ) ? ) ) ( order ( machinemen0_.POSITION machinemen0_.MACHINEID position ) ) )
16:44:17,826 [main] DEBUG org.hibernate.hql.ast.SyntheticAndFactory - Using WHERE fragment [children1_.MACHINEPARTID=children2_.MACHINEPARTID]
16:44:17,826 [main] DEBUG org.hibernate.hql.ast.SyntheticAndFactory - Using WHERE fragment [machinemen0_.MACHINEID=children1_.MACHINEID]
16:44:17,826 [main] DEBUG org.hibernate.hql.ast.JoinProcessor - Using FROM fragment [MACHINEMENU machinemen0_]
16:44:17,826 [main] DEBUG org.hibernate.hql.antlr.HqlSqlBaseWalker - query() >> end, level = 1
16:44:17,826 [main] DEBUG org.hibernate.hql.ast.AST - --- SQL AST ---
\-[SELECT] QueryNode: 'SELECT' querySpaces (MACHINESUBPARTMENU,MACHINEPARTMENU,MACHINEMENU)
+-[SELECT_CLAUSE] SelectClause: '{select clause}'
| +-[DISTINCT] SqlNode: 'distinct'
| +-[ALIAS_REF] IdentNode: 'machinemen0_.MACHINEID as MACHINEID' {alias=mm, className=cern.oasis.domain.MachineMenuItem, tableAlias=machinemen0_}
| \-[SQL_TOKEN] SqlFragment: 'machinemen0_.DESCRIPTION as DESCRIPT2_0_, machinemen0_.NAME as NAME0_, machinemen0_.POSITION as POSITION0_'
+-[FROM] FromClause: 'from' FromClause{level=1, fromElementCounter=3, fromElements=3, fromElementByClassAlias=[mm], fromElementByTableAlias=[children2_, machinemen0_, children1_], fromElementsByPath=[mm.children, mm.children.children], collectionJoinFromElementsByPath=[], impliedElements=[]}
| +-[FROM_FRAGMENT] FromElement: 'MACHINEMENU machinemen0_' FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=mm,role=null,tableName=MACHINEMENU,tableAlias=machinemen0_,colums={,className=cern.oasis.domain.MachineMenuItem}}
| +-[FROM_FRAGMENT] ImpliedFromElement: 'MACHINEPARTMENU children1_' ImpliedFromElement{implied,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=null,role=cern.oasis.domain.MachineMenuItem.children,tableName=MACHINEPARTMENU,tableAlias=children1_,colums={machinemen0_.MACHINEID ,className=cern.oasis.domain.MachinePartMenuItem}}
| \-[FROM_FRAGMENT] ImpliedFromElement: 'MACHINESUBPARTMENU children2_' ImpliedFromElement{implied,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=null,role=cern.oasis.domain.MachinePartMenuItem.children,tableName=MACHINESUBPARTMENU,tableAlias=children2_,colums={children1_.MACHINEPARTID ,className=cern.oasis.domain.MachineSubpartMenuItem}}
+-[WHERE] SqlNode: 'where'
| +-[THETA_JOINS] SqlNode: '{theta joins}'
| | +-[SQL_TOKEN] SqlFragment: 'children1_.MACHINEPARTID=children2_.MACHINEPARTID'
| | \-[SQL_TOKEN] SqlFragment: 'machinemen0_.MACHINEID=children1_.MACHINEID'
| \-[LIKE] SqlNode: 'like'
| +-[DOT] DotNode: 'children2_.NAME' {propertyName=name,dereferenceType=4,propertyPath=name,path=mm.children.children.name,tableAlias=children2_,className=cern.oasis.domain.MachineSubpartMenuItem,classAlias=null}
| | +-[DOT] DotNode: '.' {propertyName=children,dereferenceType=3,propertyPath=children,path=mm.children.children,tableAlias=children2_,className=cern.oasis.domain.MachineSubpartMenuItem,classAlias=null}
| | | +-[DOT] DotNode: '.' {propertyName=children,dereferenceType=3,propertyPath=children,path=mm.children,tableAlias=children1_,className=cern.oasis.domain.MachinePartMenuItem,classAlias=null}
| | | | +-[ALIAS_REF] IdentNode: 'machinemen0_.MACHINEID' {alias=mm, className=cern.oasis.domain.MachineMenuItem, tableAlias=machinemen0_}
| | | | \-[IDENT] IdentNode: 'children' {originalText=children}
| | | \-[IDENT] IdentNode: 'children' {originalText=children}
| | \-[IDENT] IdentNode: 'name' {originalText=name}
| \-[PARAM] SqlNode: '?'
\-[ORDER] OrderByClause: 'order'
\-[DOT] DotNode: 'machinemen0_.POSITION' {propertyName=position,dereferenceType=4,propertyPath=position,path=mm.position,tableAlias=machinemen0_,className=cern.oasis.domain.MachineMenuItem,classAlias=mm}
+-[ALIAS_REF] IdentNode: 'machinemen0_.MACHINEID' {alias=mm, className=cern.oasis.domain.MachineMenuItem, tableAlias=machinemen0_}
\-[IDENT] IdentNode: 'position' {originalText=position}
16:44:17,836 [main] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
16:44:17,856 [main] DEBUG org.hibernate.hql.ast.QueryTranslatorImpl - HQL: select distinct mm from cern.oasis.domain.MachineMenuItem mm where mm.children.children.name like ? order by mm.position
16:44:17,856 [main] DEBUG org.hibernate.hql.ast.QueryTranslatorImpl - SQL: select distinct machinemen0_.MACHINEID as MACHINEID, machinemen0_.DESCRIPTION as DESCRIPT2_0_, machinemen0_.NAME as NAME0_, machinemen0_.POSITION as POSITION0_ from MACHINEMENU machinemen0_, MACHINEPARTMENU children1_, MACHINESUBPARTMENU children2_ where children1_.MACHINEPARTID=children2_.MACHINEPARTID and machinemen0_.MACHINEID=children1_.MACHINEID and (children2_.NAME like ?) order by machinemen0_.POSITION
16:44:17,856 [main] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
16:44:17,866 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
16:44:17,866 [main] DEBUG org.hibernate.SQL - select distinct machinemen0_.MACHINEID as MACHINEID, machinemen0_.DESCRIPTION as DESCRIPT2_0_, machinemen0_.NAME as NAME0_, machinemen0_.POSITION as POSITION0_ from MACHINEMENU machinemen0_, MACHINEPARTMENU children1_, MACHINESUBPARTMENU children2_ where children1_.MACHINEPARTID=children2_.MACHINEPARTID and machinemen0_.MACHINEID=children1_.MACHINEID and (children2_.NAME like ?) order by machinemen0_.POSITION
Hibernate: select distinct machinemen0_.MACHINEID as MACHINEID, machinemen0_.DESCRIPTION as DESCRIPT2_0_, machinemen0_.NAME as NAME0_, machinemen0_.POSITION as POSITION0_ from MACHINEMENU machinemen0_, MACHINEPARTMENU children1_, MACHINESUBPARTMENU children2_ where children1_.MACHINEPARTID=children2_.MACHINEPARTID and machinemen0_.MACHINEID=children1_.MACHINEID and (children2_.NAME like ?) order by machinemen0_.POSITION
--
S.
|