0 0

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个答案 按时间排序 按投票排序

0 0

map这个集合本身就是无序的,即使在map中时有序的输出也未必一定是有序的,如果必须要按照某个对象的某个属性进行排序,你不妨把所有的key保存到一个list中,然后对list中的对象进行排序,排序完成以后,你在遍历有序的list中的对象,根据list中的对象(此时list中的对象时有序的key,你根据有序的key去获得相应的值)再去获得map中的对象。

2013年2月16日 21:12
0 0

    public TreeMap(Comparator<? super K> comparator) {
        this.comparator = comparator;
    }


treemap的构造方法中需要加入key的 comparator

2013年2月16日 15:54

相关推荐

    Hibernate教程

    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. 限制...

    Spring/泛型Hibernate的实现

    &lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect &lt;prop key="hibernate.show_sql"&gt;true &lt;!-- Hibernate Template --&gt; &lt;bean id="hibernateTemplate" class="org.springframework.orm....

    Hibernate+中文文档

    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. 限制...

    hibernate3.2中文文档(chm格式)

    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. 限制...

    HibernateAPI中文版.chm

    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. 限制...

    Hibernate学习笔记_songjignhao_1

    数据库排序则在 HQL 查询语句中使用 `ORDER BY` 子句。 联合主键映射涉及到多个字段共同构成主键的情况,可以使用 `&lt;composite-id&gt;` 标签来定义这些字段,并通过 `&lt;key-property&gt;` 或 `&lt;key-many-to-one&gt;` 子标签...

    Hibernate 对集合属性的操作.zip_hibernate

    例如,对于List,我们可以使用`&lt;list&gt;`标签,对于Set使用`&lt;set&gt;`,对于Map使用`&lt;map&gt;`,并指定对应的键(key)和值(element)类型。 3. **关联关系**: - **一对一(OneToOne)**:通过`&lt;one-to-one&gt;`标签来实现...

    Hibernate中文详细学习文档

    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. 限制...

    Hibernate 中文 html 帮助文档

    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. 限制结果集内容...

    最全Hibernate 参考文档

    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. 限制结果集...

    hibernate 体系结构与配置 参考文档(html)

    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查询语句

    可以使用`setFirstResult`和`setMaxResults`方法实现分页,`order by`子句进行排序,如`from Person order by age desc`。 总之,HQL提供了丰富的查询语法,使得开发者能够在保持对象模型的抽象性的同时,方便地对...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    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. 限制...

    Hibernate Reference Documentation3.1

    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 ...

    Hibernate3+中文参考文档

    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. 限制结果集...

    hibernate3.04中文文档.chm

    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. ...

    hibernate 框架详解

    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. 限制...

    Hibernate参考文档

    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. 限制结果集内容...

Global site tag (gtag.js) - Google Analytics