如何使RestfulController自动映射甚至手动将动态字段映射到实现MongoEntity的域类?我有一个域类,如下所示:
df <- structure(list(Datetime = structure(c(1451650740, 1451650800,
1451650860, 1451654400, 1451654460, 1454277480, 1454277540, 1454277600,
1454277660), class = c("POSIXct", "POSIXt"), tzone = ""), Energy = c(743.0253,
765.7225, 788.1493, 834.7815, 857.3012, 3427.098, 3397.591, 3344.149,
3270.803), Station = c("Ajmer", "Ajmer", "Ajmer", "Ajmer", "Ajmer",
"Kotada", "Kotada", "Kotada", "Kotada")), row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9"), class = "data.frame")
我有一个用于CRUD操作的RestfulController设置,如下所示
class Company implements MongoEntity<Company> {
String id = UUID.randomUUID().toString()
String name
String email
String phone
}
当我发布带有其他JSON字段的请求时,如何将它们自动映射到gorm_dynamic_attributes?当前,公司对象不返回有关动态属性的任何信息。我面临的另一个问题是class CompanyController extends RestfulController<Company> {
@Transactional
def save(Company company) {
if(company.hasErrors()) {
respond company.errors
}
else {
company.insert(flush:true)
respond company, status: CREATED
}
}
}
也为null,所以我也不能手动映射。任何建议将不胜感激。
答案 0 :(得分:0)
我很确定,问题不在于控制器的数据绑定,而在于域类实例的持久化。
我将像这样更改域类:
import grails.gorm.annotation.Entity
@Entity
class Company {
String id
String name
String email
String phone
def beforeValidate() {
if( !id ) setId UUID.randomUUID().toString()
}
static mapping = {
id generator:'assigned'
}
}
使用assigned
生成器。您可以将ID生成放入控制器/服务代码中,或将其保留在域类的beforeValidate
中。在后一种情况下,应特别注意应何时生成id,因为beforeValidate()
经常被调用。还要注意,在beforeValidate()
中必须调用一个setter。
我用save()
和insert()
测试了类似的领域类,在两种情况下都像魅力一样工作。