重写分页,hql写法,和外联表ManyToOne写法

本文介绍了如何在Java中使用Hibernate进行分页查询,并结合外联表ManyToOne关系,通过实体对象的属性进行过滤。示例展示了如何重写方法以实现分页功能,以及HQL查询语句的编写方式,强调了在查询中如何根据对象属性进行条件判断。
摘要由CSDN通过智能技术生成

一个domain用另一个表,在该表中写对象字段,能够外联其他表,自动查询出来另一张表,如下是用id来关联

private LightningProtection protection; //防雷所Id

@ManyToOne

@JoinColumn(name="PROTECTION",referencedColumnName="ID")
public LightningProtection getProtection() {
return protection;
}
public void setProtection(LightningProtection protection) {
this.protection = protection;

}



重写方法,赋值page,做分页

manager.getLists(page,ui);


public void getLists(Page page, UserInfo ui) {
// TODO Auto-generated method stub
List<UserInfo> list = dao.getLists(ui);
if(Utils.isEmpty(list)){
list = new ArrayList<UserInfo>();
}
if(page!=null){
int count = list.size();
page.setTotalCount(count);
int star = (page.getCurrentPage() - 1) * page.getPageSize();
int end = page.getCurrentPage() * page.getPageSize();
if (end > count)
end = count;
list = list.subList(star, end);
page.setDataList(list);
}
}

//hql中用对象赋值

public List<UserInfo> getLists(UserInfo ui) {
// TODO Auto-generated method stub
String str="";
if(ui!=null){
if(ui.getProtection()!=null && ui.getProtection().getId()!=null && !ui.getProtection().getIsParent().equals("1") ){
str+=" and u.protection.id='"+ui.getProtection().getId().toString()+"' ";
}
if(!Utils.isEmpty(ui.getLinkerTel())){
str+=" and u.linkerTel ='"+ui.getLinkerTel()+"' ";
}

}
String sql="from UserInfo u where u.isValid=1 "+str+" order by u.createDate desc ";

Query query = getSession().createQuery(sql);
List<UserInfo> list = query.list();
return list;
}


学无止境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值