Java论坛网»Java技术»为什么我在hibernate中查询不能用别名?
为什么我在hibernate中查询不能用别名?
问?:
session = HibernateSessionFactory.currentSession();
Query query = session.createQuery("from Who where name='aa'");
这样才行
session = HibernateSessionFactory.currentSession();
Query query = session.createQuery("from Who a where a.name='aa'");
要是这样就出错
org.hibernate.QueryException: could not resolve property: name of: Who [ from Who a where a.name='aa']
at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37)
at org.hibernate.persister.entity.BasicEntityPersister.toType(BasicEntityPersister.java:1094)
at org.hibernate.hql.ast.FromElementType.getPropertyType(FromElementType.java:273)
at org.hibernate.hql.ast.FromElement.getPropertyType(FromElement.java:349)
at org.hibernate.hql.ast.DotNode.getDataType(DotNode.java:474)
at org.hibernate.hql.ast.DotNode.prepareLhs(DotNode.java:208)
at org.hibernate.hql.ast.DotNode.resolve(DotNode.java:166)
at org.hibernate.hql.ast.FromReferenceNode.resolve(FromReferenceNode.java:87)
at org.hibernate.hql.ast.FromReferenceNode.resolve(FromReferenceNode.java:83)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:463)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:863)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:3713)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3190)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1405)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:599)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:404)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:834)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at DAOFactory.query(DAOFactory.java:26)
at DAOFactory.main(DAOFactory.java:47)
Exception in thread "main"
Query query = session.createQuery("from Who where name='aa'");
这样才行
session = HibernateSessionFactory.currentSession();
Query query = session.createQuery("from Who a where a.name='aa'");
要是这样就出错
org.hibernate.QueryException: could not resolve property: name of: Who [ from Who a where a.name='aa']
at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37)
at org.hibernate.persister.entity.BasicEntityPersister.toType(BasicEntityPersister.java:1094)
at org.hibernate.hql.ast.FromElementType.getPropertyType(FromElementType.java:273)
at org.hibernate.hql.ast.FromElement.getPropertyType(FromElement.java:349)
at org.hibernate.hql.ast.DotNode.getDataType(DotNode.java:474)
at org.hibernate.hql.ast.DotNode.prepareLhs(DotNode.java:208)
at org.hibernate.hql.ast.DotNode.resolve(DotNode.java:166)
at org.hibernate.hql.ast.FromReferenceNode.resolve(FromReferenceNode.java:87)
at org.hibernate.hql.ast.FromReferenceNode.resolve(FromReferenceNode.java:83)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:463)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:863)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:3713)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3190)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1405)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:599)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:404)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:834)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at DAOFactory.query(DAOFactory.java:26)
at DAOFactory.main(DAOFactory.java:47)
Exception in thread "main"
答!: 1:
怎么没人知道啊?
答!: 2:
呀?那么奇怪?
把a换成w试试
把a换成w试试
答!: 3:
Query query = session.createQuery("select a from Who a where a.name='aa'");
答!: 4:
楼上正解...我没看出来
答!: 5:
一样啊,怎么改都是出错,不用别名就没事
是不是我配置出错啊,我是用myeclipse自动生成的
<?xml version="1.0"?>
<!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 - Hibernate Tools
-->
<hibernate-mapping>
<class name="Who" table="who" schema="dbo" catalog="spdb">
<composite-id name="id" class="WhoId">
<key-property name="name" type="string">
<column name="name" length="50" />
</key-property>
<key-property name="password" type="string">
<column name="password" length="50" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
是不是我配置出错啊,我是用myeclipse自动生成的
<?xml version="1.0"?>
<!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 - Hibernate Tools
-->
<hibernate-mapping>
<class name="Who" table="who" schema="dbo" catalog="spdb">
<composite-id name="id" class="WhoId">
<key-property name="name" type="string">
<column name="name" length="50" />
</key-property>
<key-property name="password" type="string">
<column name="password" length="50" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
答!: 6:
不能用的,因为你写的是hql ,Who 不是表名,而是个映射。
hibernate会自动把hql转成 sql,那时会自己动生成别名的,如果起了就冲突了。
hibernate会自动把hql转成 sql,那时会自己动生成别名的,如果起了就冲突了。
答!: 7:
那要怎么解决啊?
答!: 8:
怎么没人回答啊?
答!: 9:
哈,自己解决了
相关JAVA教程:
是不是每写一个类最好是都有需要有个pojo啊
appfuse+webwork中不能进行验证
简单的获得session值的问题
简单获得session值的问题?
问题很麻烦.后果很严重
用xml做数据库的话,用什么处理?
sql语句更新实体bean的数据失败,高分求救!!!
请问 OpenCMS 的 JSP template 怎么创建?
请教高手:在WebService里,业务逻辑Bean从数据库中获取的多条记录怎么传到客户端接收
急!!!servlet如何实现读取一个绝对路径文件展现到页面
如何填充自己绘制的图形?
求助::hibernate tool 在eclipse3.2下的使用(代码生成??)