大家都知道在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
??? }
??? 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
??? }
}
具体问题可以灵活选择.