-
Hibernate HQL order by Map Key5
有一需求Hibernate 一实体有一个组件是Map的,Map的Key是一个对象,值是另一个对象,页面表格需要排序,要按照Map的Key的一个属性排序,本人无力应对,特此QiuZhu。
@Entity @Table(name="_chengJiDengJis") @Cache(usage= CacheConcurrencyStrategy.READ_WRITE) @JSONType(orders = {"name","beginDate","endDate","lastEditTime","operater","teachers"}) //FastJson输出顺序 public class ChengJiDengJi extends AbstractIdentityVersionedObject<Long> implements Serializable { private Map<ChengJiDengJiFenShuName,ChengJiDengJiFenShu> chengJiDengJiFenShus = new TreeMap<ChengJiDengJiFenShuName,ChengJiDengJiFenShu>();//成绩等级的分数包含ABCD等级的最大分、最小分 @ElementCollection(fetch = FetchType.EAGER) @MapKeyClass(ChengJiDengJiFenShuName.class) @MapKeyEnumerated(EnumType.STRING) @MapKeyColumn(name = "dengJiName") @CollectionTable(name = "_chengJiDengJis_fenShus", joinColumns = @JoinColumn(name = "chengJiDengJi_ID")) public Map<ChengJiDengJiFenShuName, ChengJiDengJiFenShu> getChengJiDengJiFenShus() { return chengJiDengJiFenShus; } }
public enum ChengJiDengJiFenShuName { A("A等"),B("B等"),C("C等"),D("D等"); }
@Embeddable public class ChengJiDengJiFenShu { private BigDecimal minFenShu;//最低分数 private BigDecimal maxFenShu;//最高分数 }
想要的结果类似:
from ChengJiDengJi c ordery by c.chengJiDengJiFenShus.ChengJiDengJiFenShuName.A.minFenShu
indices,elements,index等hql关键字不知道是否能用上,如何使用。。
谢谢!
问题补充:类似这样的:
from ChengJiDengJi c order by c.chengJiDengJiFenShus[ChengJiDengJiFenShuName.A].minFenShu
问题补充:问题已经解决一半了,后续暂时没想到办法。
未解决的问题具体如下:maxFenShu 如何换成minFenShu,这两个是同等级的,不知道为何Hibernate选择了maxFenShu,而不选择minFenShu.
order by
chengjiden1_.maxFenShu desc limit ?
控制台输出 的Hql,sql语句如下:
Hibernate: /* from ChengJiDengJi c where c.school=:operaterSchool order by c.chengJiDengJiFenShus['A'] desc */ select chengjiden0_.id as id0_, chengjiden0_.Lock_Version as Lock2_0_, chengjiden0_.fenZhi as fenZhi0_, chengjiden0_.fuJiaFen as fuJiaFen0_, chengjiden0_.guiZeLeiXing as guiZeLei5_0_, chengjiden0_.lastEditTime as lastEdit6_0_, chengjiden0_.name as name0_, chengjiden0_.operater_id as operater8_0_, chengjiden0_.school_id as school9_0_ from _chengJiDengJis chengjiden0_ cross join _chengJiDengJis_fenShus chengjiden1_ where chengjiden0_.id=chengjiden1_.chengJiDengJi_ID and chengjiden1_.dengJiName = 'A' and chengjiden0_.school_id=? order by chengjiden1_.maxFenShu desc limit ?
2013年2月16日 15:34
2个答案 按时间排序 按投票排序
-
map这个集合本身就是无序的,即使在map中时有序的输出也未必一定是有序的,如果必须要按照某个对象的某个属性进行排序,你不妨把所有的key保存到一个list中,然后对list中的对象进行排序,排序完成以后,你在遍历有序的list中的对象,根据list中的对象(此时list中的对象时有序的key,你根据有序的key去获得相应的值)再去获得map中的对象。
2013年2月16日 21:12
-
public TreeMap(Comparator<? super K> comparator) { this.comparator = comparator; }
treemap的构造方法中需要加入key的 comparator
2013年2月16日 15:54
相关推荐
15.9. order by子句 15.10. group by子句 15.11. 子查询 15.12. HQL示例 15.13. 批量的UPDATE & DELETE语句 15.14. 小技巧 & 小窍门 16. 条件查询(Criteria Queries) 16.1. 创建一个Criteria 实例 16.2. 限制...
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect <prop key="hibernate.show_sql">true <!-- Hibernate Template --> <bean id="hibernateTemplate" class="org.springframework.orm....
14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制...
14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制...
14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制...
数据库排序则在 HQL 查询语句中使用 `ORDER BY` 子句。 联合主键映射涉及到多个字段共同构成主键的情况,可以使用 `<composite-id>` 标签来定义这些字段,并通过 `<key-property>` 或 `<key-many-to-one>` 子标签...
例如,对于List,我们可以使用`<list>`标签,对于Set使用`<set>`,对于Map使用`<map>`,并指定对应的键(key)和值(element)类型。 3. **关联关系**: - **一对一(OneToOne)**:通过`<one-to-one>`标签来实现...
14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制...
14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容...
14.9. order by子句 14.10. group by子句 14.11. 子查询 14.12. HQL示例 14.13. 批量的UPDATE & DELETE语句 14.14. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集...
order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容...
可以使用`setFirstResult`和`setMaxResults`方法实现分页,`order by`子句进行排序,如`from Person order by age desc`。 总之,HQL提供了丰富的查询语法,使得开发者能够在保持对象模型的抽象性的同时,方便地对...
14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制...
14.10. The order by clause 14.11. The group by clause 14.12. Subqueries 14.13. HQL examples 14.14. Bulk update and delete 14.15. Tips & Tricks 15. Criteria Queries 15.1. Creating a Criteria instance ...
14.9. order by子句 14.10. group by子句 14.11. 子查询 14.12. HQL示例 14.13. 批量的UPDATE & DELETE语句 14.14. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集...
15.9. order by子句 15.10. group by子句 15.11. 子查询 15.12. HQL示例 15.13. 批量的UPDATE & DELETE语句 15.14. 小技巧 & 小窍门 16. 条件查询(Criteria Queries) 16.1. 创建一个Criteria 实例 16.2. ...
order by子句 15.10. group by子句 15.11. 子查询 15.12. HQL示例 15.13. 批量的UPDATE & DELETE语句 15.14. 小技巧 & 小窍门 16. 条件查询(Criteria Queries) 16.1. 创建一个Criteria 实例 16.2. 限制...
14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容...