-
Hibernate DetachedCriteria 查询set 类型的字段20
例:
public class Users {
private Set challenges = new HashSet(0);
}
public class Challenge {
private Integer challengeid;
private Users users;
}
User 和Challenge 是一对多的关系
现在想根据 Users 中的challenges.challengeid的某一个属性查询
challenges 是一个属性
问题补充:太谢谢了,实在太多朋友回答了,我也不好让大家都百忙了半天,每个朋友都回答了,那就等问题关闭,每个都加分!!!!!!2011年1月01日 14:17
6个答案 按时间排序 按投票排序
-
7、为了避免resultList中的重复记录, 可以转换为Set集合, Set中存放的记录不允许相同。
以下是对第6的结果进行去重复记录Set resultSet = new HashSet(); // 添加以后自动去掉重复记录 resultSet.addAll(resultList); // 循环打印出小明对应的所有Challenge信息 for (Iterator it = resultSet.iterator(); it.hasNext();) { Users user = (Users) it.next(); System.out.println(user.getUserName()); }
输出结果:
小强
小明2011年1月01日 17:38
-
6、根据users关联的集合challenges的属性进行查询
// 查询条件 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Users.class); detachedCriteria.createAlias("challenges", "cs"); detachedCriteria.add(Restrictions.like("cs.challengeName", "%" + "挑战" + "%")); Criteria criteria = detachedCriteria.getExecutableCriteria(session); // 查询 List resultList = criteria.list(); if (resultList != null && resultList.size() > 0) { for (int i = 0; i < resultList.size(); i++) { Users user = (Users) resultList.get(i); System.out.println(user.getUserName()); } }
输出结果:
小明
小明
小强
重复结果可以再过滤,这个应该是你想要的查询方式
2011年1月01日 17:33
-
1、Users实体
public class Users implements java.io.Serializable { // Fields private Long id; private String userName; private Set challenges = new HashSet(0); ...... }
表记录:
id user_name
1 小明
2 小强
2、Challenge实体public class Challenge implements java.io.Serializable { // Fields private Long challengeid; private Users users; private String challengeName; ...... }
表记录:
id challenge_name user_id
1 挑战1 1
2 挑战2 1
3 挑战3 2
3、根据challengeid查询Challenge对象,再关联出相应的users信息// 查询条件 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Challenge.class); detachedCriteria.add(Restrictions.eq("challengeid", new Long(1))); Criteria criteria = detachedCriteria.getExecutableCriteria(session); // 查询 List resultList = criteria.list(); if (resultList != null && resultList.size() > 0) { for (int i = 0; i < resultList.size(); i++) { Challenge challenge = (Challenge) resultList.get(i); // 打印出challenge所关联的users信息 System.out.println(challenge.getUsers().getUserName()); } }
结果输出:
小明
4、根据challengeName模糊查询查询Challenge对象,再关联出相应的users信息// 查询条件 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Challenge.class); detachedCriteria.add(Restrictions.like("challengeName", "%" + "挑战" + "%")); Criteria criteria = detachedCriteria.getExecutableCriteria(session); // 查询 List resultList = criteria.list(); if (resultList != null && resultList.size() > 0) { for (int i = 0; i < resultList.size(); i++) { Challenge challenge = (Challenge) resultList.get(i); // 打印出challenge所关联的users信息 System.out.println(challenge.getUsers().getUserName()); } }
结果输出:
小明
小明
小强
5、根据users查询,查询小明对应的所有Challenge信息// 查询条件 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Users.class); detachedCriteria.add(Restrictions.eq("userName", "小明")); Criteria criteria = detachedCriteria.getExecutableCriteria(session); // 查询 List resultList = criteria.list(); if (resultList != null && resultList.size() > 0) { Set set = ((Users) resultList.get(0)).getChallenges(); // 循环打印出小明对应的所有Challenge信息 for (Iterator it = set.iterator(); it.hasNext();) { Challenge challenge = (Challenge) it.next(); System.out.println(challenge.getChallengeName()); } }
结果输出:
挑战2
挑战1
2011年1月01日 17:23
-
DetachedCriteria detachedCriteria=DetachedCriteria.forClass("Users"); detachedCriteria.createAlias("challenges","c").add(Restrictions.eq("c.challengeid", "查询值"));
我查询的网页:
http://topic.csdn.net/u/20090616/10/3e8d5f18-7144-4248-85a4-41bf5c4e3903.html
http://stackoverflow.com/questions/1987471/nhibernate-exclude-a-property-from-a-projection-list-select-clause
http://topic.csdn.net/u/20080225/13/9eb2fbf7-117b-41f4-84d6-4b5461780388.html
希望能帮助你2011年1月01日 16:52
-
DetachedCriteria detachedCriteria=DetachedCriteria.forClass("Users");
detachedCriteria.createAlias("challenges","c").add(Restrictions.eq("c.challengeid", "查询值"));
我查询的网页:
http://topic.csdn.net/u/20090616/10/3e8d5f18-7144-4248-85a4-41bf5c4e3903.html
http://stackoverflow.com/questions/1987471/nhibernate-exclude-a-property-from-a-projection-list-select-clause
http://topic.csdn.net/u/20080225/13/9eb2fbf7-117b-41f4-84d6-4b5461780388.html
希望能帮助你2011年1月01日 16:51
相关推荐
Hibernate - DetachedCriteria 的完整用法文档描述
DetachedCriteria的查询方式汇总
NULL 博文链接:https://chaoyi.iteye.com/blog/2152094
NULL 博文链接:https://rmn190.iteye.com/blog/379302
DetachedCriteria
DetachedCriteria使用介绍
使用 Hibernate Criteria && DetachedCriteria Queries演示Exists Clause非常简单的项目 安装 git clone https://github.com/RameshRM/hibernate-sample.git 跑步 mvn install 这是一个maven项目,依赖项是 ...
DetachedCriteria Criteria 使用方法 非常详细外加练习
下面小编就为大家带来一篇浅谈DetachedCriteria和Criteria的使用方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
().findByCriteria(detachedCriteria) 方法可以很方便地根据DetachedCriteria 来返回查询结 果。 DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name) 进行DetachedCriteria 实例的创建。
源文件 博文链接:https://kings008.iteye.com/blog/246773