hibernate生成的sql语句的疑问?

duanjianbo26 2009-11-10 05:37:50
在执行一个普通的查询,取某个持久化对象中5条记录时发现多了5条sql语句,请大侠指点!

查询dao的实现


public List<UserFriend> findAll(User user, int begin, int number) {
Session session = sessionFactory.openSession();
try {
session.beginTransaction();
return session.createQuery("from UserFriend o where o.user=?")
.setParameter(0, user).setFirstResult(begin).setMaxResults(number)
.list();
} finally {
session.getTransaction().commit();
session.close();
}
}



生成的语句为:


Hibernate: select userfriend0_.Id as Id2_, userfriend0_.userId as userId2_, userfriend0_.userIdFriend as userIdFr3_2_ from T_UserFriend userfriend0_ where userfriend0_.userId=? limit ?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?



下面5条语句是怎么来的呢?
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
duanjianbo26 2009-11-11
  • 打赏
  • 举报
回复
恩,还有个问题就是这里面关于user和 friend 的关联

其中有两个表,user和userfriend


user表中字段主要有 uid name...
userfriend 表 id userid userfriendid ,其中userid和userfriendid是user表的外键

,我的想法是user和friend是多对多的关系,中间表是userfriend.只不过friend和user实体是一个
但案例中却这样表示

有两个实体(pojo)
pubic class user{
}
public class userfriend
{
id;

user uid;
user fid;
}
userfriend配置文件
many-to-one name="user" lazy="false">
<column name="userId" />
</many-to-one>
<many-to-one name="userFriend" lazy="false">
<column name="userIdFriend" />

这样写的话 <many-to-one name="userFriend" lazy="false"> 这句该怎么解释呢?
wifewifewife 2009-11-11
  • 打赏
  • 举报
回复
建议lz断点一下就明白是什么原因了.
gzbtiantian 2009-11-10
  • 打赏
  • 举报
回复
T_UserFriend 和T_User是多对1关系,读取T_UserFriend的时候 把符合条件的T_UserFriend和T_UserFriend有关联的T_User都读取出来, 关键看你需要不,不要的话在 <many-to-one name="user" lazy="false" cascade="none" 就行了。
duanjianbo26 2009-11-10
  • 打赏
  • 举报
回复
userfriend表的字段有

id userid userfriendid

映射关系

<many-to-one name="user" lazy="false">
<column name="userId" />
</many-to-one>
<many-to-one name="userFriend" lazy="false">
<column name="userIdFriend" />
duanjianbo26 2009-11-10
  • 打赏
  • 举报
回复
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?
Hibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?


这几条语句是怎么来的?我想问的是
阿_布 2009-11-10
  • 打赏
  • 举报
回复
Hibernate只不过给字段和表取了个别名啊!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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