Grails枚举作为域属性间歇性地保存为数据库中的序数值
Grails2.3.7、Java1.7、tomcat 由于没有明显的原因(我可以看到),reviewResults属性有时会保存为枚举的序号值 数据库模式表示该列是varchar类型 有时NA保存为NA,但有时它保存为0 这与passed相同,只是passed有时保存为1 你知道为什么会这样吗Grails枚举作为域属性间歇性地保存为数据库中的序数值,grails,enums,Grails,Enums,Grails2.3.7、Java1.7、tomcat 由于没有明显的原因(我可以看到),reviewResults属性有时会保存为枚举的序号值 数据库模式表示该列是varchar类型 有时NA保存为NA,但有时它保存为0 这与passed相同,只是passed有时保存为1 你知道为什么会这样吗 abstract class Work { // Nothing defined in here related // to the review domain enum. } 正在讨
abstract class Work {
// Nothing defined in here related
// to the review domain enum.
}
正在讨论的域类
class Review extends Work {
Results reviewResults
String notes
enum Results {
NA,
Passed,
Error
}
static constraints = {
reviewResults(nullable: true, enumType: 'string')
}
// Is this redundant if it is already declared in the constraints?
static mapping = {
reviewResults enumType: 'string'
}
}
域相关控制器
// Reviews created with Quartz job, results property is not set.
class ReviewController {
def reviewService
def show(Long id) {
def reviewInstance = Review.get(id)
def reviewResultsOptions = []
reviewResultsOptions.addAll(com.mycompany.app.Review.Results.values())
[reviewInstance: reviewInstance, reviewResultsOptions: reviewResultsOptions]
}
def closeWork(Long id, String reviewResults, String notes) {
def review = Review.get(id)
review.reviewResults = Review.Results.valueOf(reviewResults)
def result = reviewService.closeReview(review, notes)
}
}
控制器/域的服务
class ReviewService {
def workService
Review closeReview(Review work, String notes) {
work.notes = notes
workService.closeWork(work)
return work.errors.allErrors.empty ? work : null
}
}
最终保存审阅对象的服务
class WorkService {
Tracking closeWork(Work workInstance) {
def tracked = new Tracking()
workInstance.setStatus(status)
workIntance.setClosed(new Date())
WorkInstance.save(flush: true)
// Set some tracking properties and save and return the tracking object.
}
}