大家都知道在Hibernate中OneToMany 关系映射是可以选择映射的集合是什么类型的,例如Set 或者List 这里不多做介绍.
最近项目开发使用基于Groovy语言的Grails框架,在domain层实体进行OneToMany关系映射的时候默认,选择的是集合Set,这样导致,我们在自动取得Many对象值是,每次都是不同的顺序,这是我们所不希望的.解决这个方式大致有3种办法:例如 User OneToMany Book
1:在User static mapping 中对 Many 设置排序规则
class User {
String name
String password
static constraints = {
name nullable: true,null:true
password nullable: true,null:true
}
static hasMany = [books:Book]
static mapping = {
books sort: 'id', order: 'desc'
}
}
class Book {
String name
static constraints = {
name nullable: true,null:true
}
}
2: 把User 中的Book设置成SortedSet
class User {
String name
String password
SortedSet books
static constraints = {
name nullable: true,null:true
password nullable: true,null:true
}
static hasMany = [books:Book]
static mapping = {
books sort: 'id', order: 'desc'
}
}
class Book {
String name
static constraints = {
name nullable: true,null:true
}
}
3 把book 设置成List
class User {
String name
String password
List books
static constraints = {
name nullable: true,null:true
password nullable: true,null:true
}
static hasMany = [books:Book]
static mapping = {
books sort: 'id', order: 'desc'
}
}
class Book {
String name
static constraints = {
name nullable: true,null:true
}
}
具体问题可以灵活选择.
本文详细介绍了在Grails框架中解决OneToMany关系映射时集合顺序问题的三种方法:通过staticmapping设置排序规则、使用SortedSet集合或转换为List。通过实例代码演示了如何实现有序获取Many对象。

253

被折叠的 条评论
为什么被折叠?



