Hibernate极联的灵异事件

knight82 2007-12-04 04:23:46
我的user表与userinfo表实现了关联,下面是两张表的XML:

User:
<hibernate-mapping>
<class name="com.jiulong.oa.hibernate.po.User" table="user" >
<id name="userid" type="java.lang.String">
<column name="userid" length="20" />
<generator class="assigned"></generator>
</id>
<property name="password" type="java.lang.String">
<column name="password" length="20" not-null="true" />
</property>
<property name="popedomtier" type="java.lang.Integer">
<column name="popedomtier" not-null="true" />
</property>
<property name="passworddate" type="java.util.Date">
<column name="passworddate" length="10" not-null="true" />
</property>

<set name="userinfos" cascade="all" lazy="false" inverse="true">
<key>
<column name="userid" not-null="true" />
</key>
<one-to-many class="com.jiulong.oa.hibernate.po.Userinfo" />
</set>

</class>
</hibernate-mapping>


UserInfo:

<hibernate-mapping>
<class name="com.jiulong.oa.hibernate.po.Userinfo" table="userinfo" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="increment"></generator>
</id>
<property name="turename" type="java.lang.String">
<column name="turename" length="20" not-null="true" />
</property>
<property name="sex" type="java.lang.Integer">
<column name="sex" not-null="true" />
</property>
<property name="birthday" type="java.lang.String">
<column name="birthday" length="20" not-null="true" />
</property>
<property name="ship" type="java.lang.String">
<column name="ship" length="20" not-null="true" />
</property>
<property name="tel" type="java.lang.String">
<column name="tel" length="20" not-null="true" />
</property>
<property name="deptid" type="java.lang.Integer">
<column name="deptid" not-null="true" />
</property>
<property name="director" type="java.lang.String">
<column name="director" length="20" not-null="true" />
</property>
<property name="email" type="java.lang.String">
<column name="email" length="20" not-null="true" />
</property>
<property name="folder" type="java.lang.String">
<column name="folder" not-null="true" />
</property>

<many-to-one name="user" class="com.jiulong.oa.hibernate.po.User" cascade="all" fetch="select">
<column name="userid" not-null="true" unique="true" />
</many-to-one>
</class>
</hibernate-mapping>

两张表通过Userid进行关联,在Userinfo表中没有userid这个属性,userid的映射只存在与user对象中,我要通过userid对userinfo进行查询,在查询时出现了灵异事件

我的HQL本来应该写成
String hql = "FROM Userinfo WHERE user.userid = ?";



String hql = "FROM Userinfo as u WHERE u.user.userid = ?";
String hql = "FROM Userinfo WHERE userid = ?";


以上两种HQL的写法我能得到结果

反而

String hql = "FROM Userinfo WHERE user.userid = ?";抛出异常

Exception in thread "main" org.hibernate.QueryException: could not resolve property: userid of: com.jiulong.oa.hibernate.po.Userinfo [FROM com.jiulong.oa.hibernate.po.Userinfo WHERE user.userid = ?]
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 com.jiulong.oa.hibernate.dao.impl.top.UserInfoDaoImpl.doSelect(UserInfoDaoImpl.java:24)
at com.jiulong.oa.logic.impl.top.UserInfoLogicImpl.main(UserInfoLogicImpl.java:25)


这到底是什么原因啊??我什么地方配置错了吗?
...全文
202 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
karlpan01 2007-12-05
  • 打赏
  • 举报
回复
不报异常才怪!呵呵!
xiaocainiao0703 2007-12-05
  • 打赏
  • 举报
回复
大哥,别名问题!
zhb_821012 2007-12-05
  • 打赏
  • 举报
回复
user是什么?
要是属性应该指定哪个表的属性
应该给个别名吧
这个问题还真没注意过没那么写过
一般都加as的
knight82 2007-12-05
  • 打赏
  • 举报
回复
user是userinfo的属性啊
rickhunterchen 2007-12-05
  • 打赏
  • 举报
回复
FROM Userinfo WHERE user.userid = ?

那个user.是哪来的,难道是userinfo的别名,但你又没有定义
knight82 2007-12-04
  • 打赏
  • 举报
回复
帮帮忙,谁能帮我搞定
forestking_xx 2007-12-04
  • 打赏
  • 举报
回复
版本问题。换个新的hibenrate jar文件。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧