看到旧的SQL很蛋疼,一大推判断语句,组合的逻辑很乱,决定用Criteria来改写。
途中遇到两个问题,要mark下:
查找属性为成员类的属性,直接Restrictions.like("attrObj.name",searchStr)是不行的,Criteria会直接以object.name为属性做查找;
需要创建成员类的Alias:
criteria.createAlias("obj.attrObj","attrObj");
.......
...Restrictions.like("attrOjb.name", searchStr);
查找属性为集合类的属性,则需要要创建集合类的Alias:
criteria.createAlias("catList");
.......
...Restrictions.....具体忘了,明天补上
现在还有个问题没解决:
关联查询
Class A {
List C
}
Class B{
List C
Name name
}
Class C {
List A
List B
}
怎么查找B.name="Tom"的 A 结果集
途中遇到两个问题,要mark下:
查找属性为成员类的属性,直接Restrictions.like("attrObj.name",searchStr)是不行的,Criteria会直接以object.name为属性做查找;
需要创建成员类的Alias:
criteria.createAlias("obj.attrObj","attrObj");
.......
...Restrictions.like("attrOjb.name", searchStr);
查找属性为集合类的属性,则需要要创建集合类的Alias:
criteria.createAlias("catList");
.......
...Restrictions.....具体忘了,明天补上
现在还有个问题没解决:
关联查询
Class A {
List C
}
Class B{
List C
Name name
}
Class C {
List A
List B
}
怎么查找B.name="Tom"的 A 结果集
本文讨论了如何使用Criteria方法替代传统SQL查询中繁杂的判断语句,简化了逻辑并提高了查询效率。主要关注了如何针对成员类属性和集合类属性进行查询,并解决关联查询中的复杂问题。
476

被折叠的 条评论
为什么被折叠?



