报错如下:
INFO [main] org.hibernate.cfg.Environment - Hibernate 3.1.3
INFO [main] org.hibernate.cfg.Environment - hibernate.properties not found
INFO [main] org.hibernate.cfg.Environment - using CGLIB reflection optimizer
INFO [main] org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
INFO [main] org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
INFO [main] org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
INFO [main] org.hibernate.cfg.Configuration - Reading mappings from resource: org/hibernate/TRole.hbm.xml
INFO [main] org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.Role -> ROLE
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.Role.users -> user_role
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.Role.menus -> role_menu
INFO [main] org.hibernate.cfg.Configuration - Reading mappings from resource: org/hibernate/TUser.hbm.xml
INFO [main] org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.User -> USER
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.User.roles -> user_role
INFO [main] org.hibernate.cfg.Configuration - Reading mappings from resource: org/hibernate/TMenu.hbm.xml
INFO [main] org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.Menu -> MENU
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.Menu.roles -> role_menu
INFO [main] org.hibernate.cfg.Configuration - Configured SessionFactory: null
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3333/test11
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****}
INFO [main] org.hibernate.cfg.SettingsFactory - RDBMS: MySQL, version: 5.0.67-community-nt
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.0.8 ( Revision: ${svn.Revision} )
INFO [main] org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQLDialect
INFO [main] org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
INFO [main] org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
INFO [main] org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
INFO [main] org.hibernate.cfg.SettingsFactory - Connection release mode: auto
INFO [main] org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
INFO [main] org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
INFO [main] org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
INFO [main] org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
INFO [main] org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
INFO [main] org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
INFO [main] org.hibernate.cfg.SettingsFactory - Query cache: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Cache provider: org.hibernate.cache.EhCacheProvider
INFO [main] org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Statistics: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
INFO [main] org.hibernate.impl.SessionFactoryImpl - building session factory
WARN [main] net.sf.ehcache.config.Configurator - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/F:/MyEclipse%206.0/myeclipse/eclipse/plugins/com.genuitec.org.hibernate.eclipse_6.0.1.zmyeclipse601200710/myeclipse-data/3.0/lib/ehcache-1.1.jar!/ehcache-failsafe.xml
INFO [main] org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
ERROR [main] org.hibernate.hql.PARSER - illegal syntax near collection: users
java.lang.NullPointerException
at org.hibernate.hql.ast.tree.DotNode.getColumns(DotNode.java:97)
at org.hibernate.hql.ast.tree.DotNode.initText(DotNode.java:210)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:204)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:725)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1215)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4032)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3518)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1758)
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:218)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
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:1583)
at org.hibernate.HibernateMain.main(HibernateMain.java:28)
INFO [main] org.hibernate.cfg.Environment - Hibernate 3.1.3
INFO [main] org.hibernate.cfg.Environment - hibernate.properties not found
INFO [main] org.hibernate.cfg.Environment - using CGLIB reflection optimizer
INFO [main] org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
INFO [main] org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
INFO [main] org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
INFO [main] org.hibernate.cfg.Configuration - Reading mappings from resource: org/hibernate/TRole.hbm.xml
INFO [main] org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.Role -> ROLE
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.Role.users -> user_role
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.Role.menus -> role_menu
INFO [main] org.hibernate.cfg.Configuration - Reading mappings from resource: org/hibernate/TUser.hbm.xml
INFO [main] org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.User -> USER
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.User.roles -> user_role
INFO [main] org.hibernate.cfg.Configuration - Reading mappings from resource: org/hibernate/TMenu.hbm.xml
INFO [main] org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.Menu -> MENU
INFO [main] org.hibernate.cfg.HbmBinder - Mapping collection: org.hibernate.Menu.roles -> role_menu
INFO [main] org.hibernate.cfg.Configuration - Configured SessionFactory: null
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3333/test11
INFO [main] org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****}
INFO [main] org.hibernate.cfg.SettingsFactory - RDBMS: MySQL, version: 5.0.67-community-nt
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.0.8 ( Revision: ${svn.Revision} )
INFO [main] org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQLDialect
INFO [main] org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
INFO [main] org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
INFO [main] org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
INFO [main] org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
INFO [main] org.hibernate.cfg.SettingsFactory - Connection release mode: auto
INFO [main] org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
INFO [main] org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
INFO [main] org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
INFO [main] org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
INFO [main] org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
INFO [main] org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
INFO [main] org.hibernate.cfg.SettingsFactory - Query cache: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Cache provider: org.hibernate.cache.EhCacheProvider
INFO [main] org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Statistics: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
INFO [main] org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
INFO [main] org.hibernate.impl.SessionFactoryImpl - building session factory
WARN [main] net.sf.ehcache.config.Configurator - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/F:/MyEclipse%206.0/myeclipse/eclipse/plugins/com.genuitec.org.hibernate.eclipse_6.0.1.zmyeclipse601200710/myeclipse-data/3.0/lib/ehcache-1.1.jar!/ehcache-failsafe.xml
INFO [main] org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
ERROR [main] org.hibernate.hql.PARSER - illegal syntax near collection: users
java.lang.NullPointerException
at org.hibernate.hql.ast.tree.DotNode.getColumns(DotNode.java:97)
at org.hibernate.hql.ast.tree.DotNode.initText(DotNode.java:210)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:204)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:725)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1215)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4032)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3518)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1758)
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:218)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
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:1583)
at org.hibernate.HibernateMain.main(HibernateMain.java:28)
package org.hibernate;import java.util.ArrayList;import java.util.Iterator;
import java.util.List;
public class HibernateMain {
public static void main(String args[]){
try {
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
tx.commit();
Query q=session.createQuery("select id from Menu t where t.roles.users.id='2345'");
List list=new ArrayList();
list=q.list();
for(Iterator it=list.iterator();it.hasNext();){
String id=(String)it.next();
System.out.println(id);
}
}catch (Exception e) {
e.printStackTrace();
} }}
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration> <session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3333/test11
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">MySql</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<mapping resource="org/hibernate/TRole.hbm.xml" />
<mapping resource="org/hibernate/TUser.hbm.xml" />
<mapping resource="org/hibernate/TMenu.hbm.xml" /> </session-factory></hibernate-configuration>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.hibernate.Menu" table="MENU">
<id name="id" type="java.lang.String">
<column name="id" />
</id> <property name="menuname" column="menuname"
type="java.lang.String" />
<set name="roles" table="role_menu"
lazy="true" cascade="none">
<key>
<column name="menuid"></column>
</key>
<many-to-many class="org.hibernate.Role" column="roleid">
</many-to-many> </set>
</class>
</hibernate-mapping>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.hibernate.Role" table="ROLE">
<id name="id" type="java.lang.String">
<column name="id" />
</id> <property name="rolename" column="rolename"
type="java.lang.String" />
<set name="users" table="user_role" inverse="false"
lazy="true" cascade="none">
<key>
<column name="roleid"></column>
</key>
<many-to-many class="org.hibernate.User" column="userid">
</many-to-many> </set>
<set name="menus" table="role_menu" inverse="false"
lazy="false" cascade="none">
<key>
<column name="roleid"></column>
</key>
<many-to-many class="org.hibernate.Menu" column="menuid">
</many-to-many> </set>
</class>
</hibernate-mapping>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.hibernate.User" table="USER">
<id name="id" type="java.lang.String">
<column name="id" />
</id> <property name="userName" column="username"
type="java.lang.String" />
<property name="password" column="password"
type="java.lang.String" />
<set name="roles" table="user_role" inverse="false"
lazy="false" cascade="none">
<key>
<column name="userid"></column>
</key>
<many-to-many class="org.hibernate.Role" column="roleid">
</many-to-many> </set>
</class>
</hibernate-mapping>
一片一片的都是代码,也没找到你的这个集合:users在哪!
你找找users附近的语句,是否存在问题,是否有空指针现象。