GORM按照与添加顺序相反的顺序添加行

时间:2015-05-28 15:11:48

标签: grails gorm

class Dog {
    String name
    String type

    static hasMany = [snacks:Snack]
}


class Snack {
    String name;
    String protein;
    Boolean vegetarian;     
}

dogInstance.addToSnacks(new Snack(name: "Dog Yums", protein: "Pork", vegetarian: false);
dogInstance.addToSnacks(new Snack(name: "Super Tasty Snack", protein: "Beef", vegetarian: false);
dogInstance.addToSnacks(new Snack(name: "Woofles", protein: null, vegetarian: true);
dogInstance.save(flush: true)

我希望零食的数据库表按照添加的顺序包含零食。相反,他们最终在数据库中逆转。知道为什么会这样吗?我正在使用MSSQL数据库来存储数据。

我除了

id:1,姓名:Dog Yums,蛋白质:猪肉,素食:假的

id:2,名称:超级美味小吃,蛋白质:牛肉,素食:假的

id:3,name:Dog Yums,protein:null,vegetarian:True

我得到了什么

id:1,name:Dog Yums,protein:null,vegetarian:True

id:2,名称:超级美味小吃,蛋白质:牛肉,素食:假的

id:3,姓名:Dog Yums,蛋白质:猪肉,素食:假的

1 个答案:

答案 0 :(得分:2)

默认情况下,GORM(实际上是Hibernate)不保证集合的顺序。如果您需要按特定顺序收集集合,则需要将此集合指定为List<T>,例如:

class Dog {
    String name
    String type
    List<Snack> snacks

    static hasMany = [snacks:Snack]
}