heiyee 2013-10-07 08:45 采纳率: 0%
浏览 2177

关于HQL和SQL查询的问题

这是配置文件user.hbm
`

  <class name="com.entity.User" table="user">
                        <id name="email" column="email" type="string" length="100">
                            <generator class="assigned"></generator>
                        </id>
                        <property name="username" column="username" type="string"></property>
                        <property name="age" column="age" type="integer"></property>
                        <property name="sex" column="sex" type="integer"></property>

                        <set name="topic" cascade="all">
                            <key column="user_id" foreign-key="email"></key>
                            <one-to-many class="com.jiandan.entity.Topic" />
                        </set>                      
 </class>`

这是topic类的配置文件

 <class name="com.entity.Topic" table="topic">
                    <id column="id" name="id" type="string" length="100">
                        <generator class="uuid"></generator>
                    </id>
                    <property name="content" column="content" type="string"></property>
                    <property name="post_date" column="post_date" type="java.util.Date"></property>
                    <many-to-one class="com.jiandan.entity.User" name="user_id" column="user_id" ></many-to-one>
                  <set name="response" cascade="all">
                        <key column="topic_id"></key>
                        <one-to-many class="com.jiandan.entity.Response"/>
                    </set>
   </class> 

当我使用这种查询方式时就会出错:

Query query = session.createQuery("from Topic where user_id='Clement@gmail.com'");
List topic = query.list();
for(Topic t : topic){
System.out.println(t.getContent());
}
错误信息:

2013-10-7 16:34:24 org.hibernate.property.BasicPropertyAccessor$BasicSetter set
ERROR: HHH000123: IllegalArgumentException in class: com.jiandan.entity.Topic, setter method of property: user_id
2013-10-7 16:34:24 org.hibernate.property.BasicPropertyAccessor$BasicSetter set
ERROR: HHH000091: Expected type: java.lang.String, actual value: com.jiandan.entity.User_$$_javassist_0
Exception in thread "main" org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.jiandan.entity.Topic.user_id

但是使用sql的方式却可以查出结果:

SQLQuery sql = session.createSQLQuery("select * from Topic where user_id = 'Clement@gmail.com'");
        List<Object[]> topic = sql.list();
        for(Object[] t : topic){
            int len = t.length;
            for(int i=0; i<len;i++){
                System.out.println(t[i]);
            }
        }

谁能帮我解决这个问题,非常感谢!

  • 写回答

1条回答 默认 最新

  • 我说假如 2015-01-26 06:28
    关注

    Topic.user_id 的setter有问题

    评论

报告相同问题?

悬赏问题

  • ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流