hibernate 一对多关系 set 排序

时间:2021-04-21 11:35:24
目前使用hibernate技术开发项目过程中遇到一个问题,通过数据操作类的方法得到主表reportId 对应的从表信息在LIST中 然后我循环list 信息放在set 中,然后取得set里面的信息时没有按list中的顺序展现。
想请教各位,是否一对多关系的实体类中一定要用set来存放对象呢?可不可以用list 
如果可以的话 那hbm.xml 和bean 该如何配置?
如果不可以怎么实现 我的set里面存放的信息是排序的呢?



hibernate的实体类配置文件中的主表中配置明细如下 如 A.hbm.xml
     <set name="details" inverse="false" cascade="all"  lazy="false" fetch="select" >  
            <key>  
               <column name="reportId" length="50" not-null="true"/>  
           </key>  
           <one-to-many class="com.septwolves.emp.bean.Adetail" />  
        </set>  
A.java如下
   private Set<Adetail> details=new HashSet(0);


 

9 个解决方案

#1


TreeSet

#2


默认都是用的set至于能不能用list我就不知道了··
排序的话是可以设置的吧
我用注解的可以设置 
配置文件也行吧
@OrderBy(value = "opNumber ASC")这个是注解的
配置文件应该是在set标签加上order-by=“排序的列”

#3


xml注释是用set,但pojo类中可以是list啊

#4


xml配置文件中配置order-by=“排序的列” 

#5


hibernate 一对多关系 set 排序谢谢 楼上各位的回答,可能是我问题描述的不够清楚;我的数据的由前台的json字符串转换为list<Adetail> 的
但hibernate的实体类A.java的detail对象又是放在set中  所以我只能循环list 然后把对象放在set中
set数据就无顺序了。


#6


2楼说了,用TreeSet

#7


TreeSet 是有序的,但是不能用在hibernate对应得实体类中;及在A.java 中  private TreeSet<Adetail> details=new TreeSet();这样写会报错说转换问题
可能是因为A.hbm.xml中使用的是<set>标签的事 ,所以想请教A.hbm.xml中除了<set>还能不能用其他标签来对于实体类中的集合呢?如果可以 该如何写

#8


Set想有序用TreeSet,当然可以存在List里面啊。
xml的配置有点麻烦,不如看看注解或者自己写方法转换存入不行吗?

#9


没办法,只能用了一个很土的方法解决了,本人在 AAdetail对象中添加了一个属性 用来存序号,这个序号就
是循环list时候的i;将i值赋值给AAdetail的序号这个属性中,然后存到数据库,在读取的时候按序号排列展示。  

#1


TreeSet

#2


默认都是用的set至于能不能用list我就不知道了··
排序的话是可以设置的吧
我用注解的可以设置 
配置文件也行吧
@OrderBy(value = "opNumber ASC")这个是注解的
配置文件应该是在set标签加上order-by=“排序的列”

#3


xml注释是用set,但pojo类中可以是list啊

#4


xml配置文件中配置order-by=“排序的列” 

#5


hibernate 一对多关系 set 排序谢谢 楼上各位的回答,可能是我问题描述的不够清楚;我的数据的由前台的json字符串转换为list<Adetail> 的
但hibernate的实体类A.java的detail对象又是放在set中  所以我只能循环list 然后把对象放在set中
set数据就无顺序了。


#6


2楼说了,用TreeSet

#7


TreeSet 是有序的,但是不能用在hibernate对应得实体类中;及在A.java 中  private TreeSet<Adetail> details=new TreeSet();这样写会报错说转换问题
可能是因为A.hbm.xml中使用的是<set>标签的事 ,所以想请教A.hbm.xml中除了<set>还能不能用其他标签来对于实体类中的集合呢?如果可以 该如何写

#8


Set想有序用TreeSet,当然可以存在List里面啊。
xml的配置有点麻烦,不如看看注解或者自己写方法转换存入不行吗?

#9


没办法,只能用了一个很土的方法解决了,本人在 AAdetail对象中添加了一个属性 用来存序号,这个序号就
是循环list时候的i;将i值赋值给AAdetail的序号这个属性中,然后存到数据库,在读取的时候按序号排列展示。