我必须使用 Grails 4 创建一个应用程序。目前,没有数据库,它都在内存中。
我想要的只是一个模块可以包含一个代表成绩的 double 列表。
域类Module.groovy
:
package myapp
import grails.rest.Resource
@Resource(uri='/module', formats = ['json', 'xml'])
class Module {
String title
String description
int semesterID
List<Double> grades;
double finalGrade
static constraints = {
title blank:false
description blank:false
semesterID blank:false
}
}
要开发应用程序,我想使用填充对象。所以我在 BootStrap.groovy 中初始化了一些:
class BootStrap {
def init = { servletContext ->
//Create default Modules
new Module(title: "WebeC", description: "Web Engineering", semesterID: 1).save()
new Module(title: "WebeC", description: "Web Engineering", semesterID: 2).save()
new Module(title: "ism", description: "Information Security Management", semesterID: 2).save()
}
def destroy = {
}
}
到目前为止一切都很好,但是当我尝试填写成绩时我失败了。
我已经尝试过的事情:(全部在 BootStrap.groovy 中)
//test 1
new Module(title: "WebeC", description: "Web Engineering", semesterID: 1, grades: [4.0, 5.5, 3]).save()
//test 2
new Module(title: "WebeC", description: "Web Engineering", semesterID: 1, grades: {[4, 5, 6]}).save()
// test 3
def List<Double> temp = [4.0, 5.5, 3]
new Module(title: "WebeC", description: "Web Engineering", semesterID: 1, grades: temp).save()
输出始终相同:
[{"id":1,"title":"WebeC","semesterID":1,"grades":[],"description":"Web Engineering","finalGrade":0.0}, ...]
这只是语法问题还是我的整个方法都错了?
非常感谢你
最佳答案
您必须添加 hasMany
您域中的静态属性:
static hasMany = [grades: Double]
然后你应该能够用以下内容填充成绩:
new Module(title: "WebeC", description: "Web Engineering", semesterID: 1, grades: [4.0, 5.5, 3]).save()
在
BootStrap
您必须在事务中保存域:Module.withTransaction { status ->
Module module = new Module(name: "name1", grades: [4.0, 5.5, 3])
module.save(flush: true)
}
关于grails - 如何使用 List<Double> 填充 Grails 域类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59078300/