Hibernate条件查询随机
我有一个使用Hibernate的项目。 这有一个名为Hibernate条件查询随机,hibernate,random,criteria,Hibernate,Random,Criteria,我有一个使用Hibernate的项目。 这有一个名为Question的类。 每个问题都有一个难度等级(1,2,3); 每个问题还有一个属性is field(a、b、c、d、e、f、g、h、i、k) 假设我有100个问题。我想随机得到20个有条件的问题: 第1级中的7个问题 第2级中的7个问题 第三级有6个问题 每个字段至少有一个问题 首先,多亏了all^^,我认为使用Hibernate查询甚至一组Hibernate查询都很难解决这个问题 我会这样做: 在内存中加载所有100个问题 创建一个
Question
的类。
每个问题
都有一个难度等级(1,2,3);
每个问题
还有一个属性is field(a、b、c、d、e、f、g、h、i、k)
假设我有100个问题。我想随机得到20个有条件的问题:
- 第1级中的7个问题
- 第2级中的7个问题
- 第三级有6个问题
- 每个字段至少有一个问题
首先,多亏了all^^,我认为使用Hibernate查询甚至一组Hibernate查询都很难解决这个问题 我会这样做:
- 在内存中加载所有100个问题
- 创建一个
,以及该映射中的所有列表映射
- 对于每个字段,回答相应列表中具有可接受级别的第一个问题
- 一旦你在每个领域都有一个问题,就把剩下的所有问题都列在一个列表中,重新排列列表,然后迭代列表。每当一个问题有一个可以接受的水平时,就接受它。直到你有20个问题为止
- 每个字段发出一个查询以在每个字段中查找问题。where子句应该只接受给定的字段,并且应该只接受仍然可以接受的级别
- 发出一个查询以随机查找N个问题(例如,N等于50,并且带有一个where子句,该子句只接受其余级别),并获取前10个可接受的问题。如果有少于10个可接受的问题,请重试。最多应该有3个这样的查询。确保where子句拒绝已加载问题的ID
- 在内存中加载所有100个问题
- 创建一个
,以及该映射中的所有列表映射
- 对于每个字段,回答相应列表中具有可接受级别的第一个问题
- 一旦你在每个领域都有一个问题,就把剩下的所有问题都列在一个列表中,重新排列列表,然后迭代列表。每当一个问题有一个可以接受的水平时,就接受它。直到你有20个问题为止
- 每个字段发出一个查询以在每个字段中查找问题。where子句应该只接受给定的字段,并且应该只接受仍然可以接受的级别
- 发出一个查询以随机查找N个问题(例如,N等于50,并且带有一个where子句,该子句只接受其余级别),并获取前10个可接受的问题。如果有少于10个可接受的问题,请重试。最多应该有3个这样的查询。确保where子句拒绝已加载问题的ID