在执行一个普通的查询,取某个持久化对象中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条语句是怎么来的呢?
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条语句是怎么来的呢?
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=?
这几条语句是怎么来的?我想问的是
<column name="userId" />
</many-to-one>
<many-to-one name="userFriend" lazy="false">
<column name="userIdFriend" />
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"> 这句该怎么解释呢?