我正在使用Grails v3.3.9,build.gradle中的最新grails hibernate 8和grails插件,以及java8插件,字段插件(没有任何区别)和Hibernate 8。
compile "org.hibernate:hibernate-core:5.1.5.Final"
compile group: 'org.hibernate', name: 'hibernate-java8', version: '5.1.5.Final'
compile "org.grails.plugins:gsp"
compile 'org.grails.plugins:grails-java8:1.2.3' //java 8 features including datetime in GSP
compile 'org.grails.plugins:fields:2.2.10'
我在我的Domain模型上尝试了这个,它使用LocalDateTime扩展了一个抽象类
abstract class Agreement {
String contractReference
String status
LocalDateTime contractSignedDate
LocalDateTime lastUpdated //updated by framework
LocalDateTime dateCreated //updated by framework
static constraints = {
contractReference nullable:false
status nullable:false
contractSignedDate nullable:true
}
}
这里有具体的课程
class MaintenanceAgreement extends Agreement {
String level
Map category = [:] //p1 to p5 and sla details
//static belongsTo = [serviceProvider : OrgRoleInstance, maintainer: OrgRoleInstance]
// implemented as unidirectional many to one ! mag point to org
static belongsTo = [maintainer: OrgRoleInstance]
static constraints = {
level nullable:false
//serviceProvider nullable:true
maintainer nullable:false //ref to maintainer party
category nullable:false
}
}
如果我在带有空列的bootstrap中有Db记录 - grails就不知道任何字段持有者如何进入null。返回bootstrap并手动创建一个值,重启。
至少这个时间列表和显示渲染在表单上放置了实际内容
但是,当您创建新表单(或编辑操作)时,您会得到这个。 contractSigned(localDateTime)没有编辑器,最后域模型有一个属性类别作为Map,而Map列没有编辑器。
这是一个真正的问题。我可以回复尝试使用Date,但这确实是一个逆行步骤,平台建议支持新的数据时间格式。 Map列可以考虑我的后备内容。
我错过了一些让这项工作成功的东西吗?或者我是否会因缺陷而加薪?
我在之前的3.3.8版本中遇到了这个问题,但没有解决数据时间问题
另见先前在这里询问功能
不要在类中使用LocalDateTime
作为数据类型。您可能无法编辑它。请改用Date
类型。然后grails本身将为您提供日期选择器以添加和编辑。如果您需要在GSP中提取当前日期时间,可以使用${new Date()
作为该字段的值。