set 应该不为null,因为我曾用 if(set == null)进行调试判断,结果并不为null,原因应该是在对获取的set进行读取的时候出现错误,因为我用int t = set.size();这条语句去判断其大小时,也在这条语句报异常,但我不明白的是为什么对set进行读取的时候为什么会异常?? 下面是myeclipse控制台报出的sql语句(在读出这些语句之后就报异常): Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_, user0_.password as password0_0_, user0_.account as account0_0_, user0_.sex as sex0_0_, user0_.college as college0_0_, user0_.type as type0_0_ from t_user user0_ where user0_.id=?Hibernate: select course0_.user_id as user1_1_, course0_.course_id as course2_1_, course1_.id as id2_0_, course1_.course_code as course2_2_0_, course1_.course_name as course3_2_0_ from t_record course0_ left outer join t_course course1_ on course0_.course_id=course1_.id where course0_.user_id=?Hibernate: select course0_.id as id2_0_, course0_.course_code as course2_2_0_, course0_.course_name as course3_2_0_ from t_course course0_ where course0_.id=?从这些语句中好像是在对set读取一个元素之后就产生异常...
Set set = user.getCourse(); 你配置文件中<set name="Course" table="t_record" cascade="save-update"> <key column="user_id" /> <many-to-many class="Course" column="course_id" /> </set>这里的set不是说查询结果是放在set集合中的。 另外hibernate有延迟加载的设置,你的course是关联表中的数据,user是查出来了,不过course不一定,可以进行一些设置,ms是lazy属性。 还有你使用get方法查询,不知道这个方法和关联抓取有没有冲突或影响,可以去google一下,有影响的话就用sql或hql吧,可以显示控制关联抓取,更好
下面是myeclipse控制台报出的sql语句(在读出这些语句之后就报异常):
Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_, user0_.password as password0_0_, user0_.account as account0_0_, user0_.sex as sex0_0_, user0_.college as college0_0_, user0_.type as type0_0_ from t_user user0_ where user0_.id=?Hibernate: select course0_.user_id as user1_1_, course0_.course_id as course2_1_, course1_.id as id2_0_, course1_.course_code as course2_2_0_, course1_.course_name as course3_2_0_ from t_record course0_ left outer join t_course course1_ on course0_.course_id=course1_.id where course0_.user_id=?Hibernate: select course0_.id as id2_0_, course0_.course_code as course2_2_0_, course0_.course_name as course3_2_0_ from t_course course0_ where course0_.id=?从这些语句中好像是在对set读取一个元素之后就产生异常...
你配置文件中<set name="Course" table="t_record" cascade="save-update">
<key column="user_id" />
<many-to-many class="Course" column="course_id" />
</set>这里的set不是说查询结果是放在set集合中的。
另外hibernate有延迟加载的设置,你的course是关联表中的数据,user是查出来了,不过course不一定,可以进行一些设置,ms是lazy属性。
还有你使用get方法查询,不知道这个方法和关联抓取有没有冲突或影响,可以去google一下,有影响的话就用sql或hql吧,可以显示控制关联抓取,更好
http://www.wangchao.net.cn/bbsdetail_64930.html