hql 别名问题请教

有个BookComment类的映射文件如下

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.brucefeng.sinter.domain">
  <class name="BookComment" table="comment">
    <id name="bookCommentPK" column="commentpk">
        <generator class="uuid.hex"></generator>
    </id>
    <property name="title" type="string" column="title"></property>
    <property name="content" type="text" column="content"></property>
    <many-to-one name="author" column="userpk" 
    class="org.brucefeng.sinter.domain.User" 
    cascade="save-update" fetch="join" lazy="false"></many-to-one>
  </class>
</hibernate-mapping>

 在查询的时候使用下列语句

String hql = "from BookComment as bc where bc.userpk=:author order by bc.title asc";

 执行代码时出现如下问题:

org.hibernate.QueryException: could not resolve property: userpk of: org.brucefeng.sinter.domain.BookComment [from org.brucefeng.sinter.domain.BookComment as bc where bc.userpk=:author order by bc.title asc]

 

谢谢。


问题补充:
当将hql语句修改为

String hql = "from BookComment where userpk=:author order by title asc

后可以顺利查询出结果

3个回答

[code="xml"]
class="org.brucefeng.sinter.domain.User"
cascade="save-update" fetch="join" lazy="false">

[/code]

[quote] name="author" [/quote]

所以应该用[color=red]bc.author[/color]而不是[color=red]bc.userpk[/color]

应该不是别名的问题,author 是另外一个表中的字段,并不在当前表中。
要么就是userpk是一个实体类中的对象,不能直接点出对象的,要点到他的下一级属性

[code="java"]
String hql = "from BookComment as bc where bc.author =:author order by bc.title asc";

[/code]

这样才对。hql应该使用xml里配置的name而不是column。其它都对。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐