如何查询由外键关联的数据表中的部分数据?Committe.javapublic class Committe {private Integer idpriva
如何查询由外键关联的数据表中的部分数据? Committe.java public class Committe { private Integer id; private Users users; private String work; private String position; ... } Users.java public class Users { private Integer id; private Integer userId; private String userName; ... } 我想查询Committe中的work,position还有Users中的id,userId,userName。hql语句不用简单的from Committe,因为数据表中有比较大的数据这样的效率很低。单张表用select ... from ...的,多张表就不会写了。 各位大能,帮帮小弟吧。 [解决办法] 级联查询啊,有没有外键关联。[解决办法] 用sql还是hql? 用sql的话:
select c.`work`, c.`position`, u.* from `committe` c left join `users` u on c.User_Id = u.id[解决办法] 引用: 实体类Committe中是没有User_Id的只有private Users users;查询语句中不能写where Committe.User_Id = Users.id 的吧? 试试where Committe.users.User_Id = Users.id
[解决办法] sql直接好了,用那么麻烦啊
[解决办法] 引用: 那个表后便跟的并不是表中的字段名称,而是类中的变量名 org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: User_Id Committe.users.userId这样不行?
[解决办法] 引用: 不行的,Committe后面只能跟着在实体类Committe.java中有的字段名 实在不行就createSqlQuery("
select c.`work`, c.`position`, u.*
from `committe` c
left join `users` u
on c.User_Id = u.id
")...
[解决办法] 引用: 不行的,Committe后面只能跟着在实体类Committe.java中有的字段名 select a.work,a.position,a.users.id,a.users.userId,a.users.userName
from Committe a
where 1=1
and ...
[解决办法] select a.work,a.position,a.users.id,a.users.userId,a.users.userName
from Committe a,a.users
where 1=1
and ...
要注意这样查返回的结果是一个对象数组,数组长度是查询的字段个数。
[解决办法] hibernate配置关联关系了么
[解决办法] 嗯,这样写是没错的。没加a.users这个之前,你报的数据类型转换错误,不知道是不是跟你的取值有关。
这样查返回结果是对象数组的集合,之后要迭代下
类似于下面这样
List<User> list = new ArrayList<User>();
Iterator it=list.iterator();
while(it.hasNext())
{
Object[] obj=(Object[])it.next();
User user=new User();
user.setName((String)obj[0]);
user.setAge(Integer.parseInt(obj[1]));
list.add(user);
}
------解决方案--------------------
select * from sysobjects where parent_obj=(select id from sysobjects where [name]='你的表名') and xtype='F'