Yas*_*wal 6 grails groovy jodatime grails-domain-class deserialization
我在Grails域类中有一个LocalTime字段(使用Joda Time).
Class WorkDone{
LocalTime duration
}
Run Code Online (Sandbox Code Playgroud)
现在我已将此字段更改为String(具有Text约束),以便它可以支持大于24小时的持续时间.
String duration
Run Code Online (Sandbox Code Playgroud)
问题是数据库中已有一些数据.我想通过Grails中的数据库迁移来清理这些数据.我正在使用Postgres将LocalTime保存为Bytea(二进制数据).
当我调用WorkDone.duration时,它返回一个表单的String:
\ xaced0005737200176f72672e6a6f64612e74696d652e4c6f63616c54696d65fffff44abbf29def0200024a000c694c6f63616c4d696c6c69734c000b694368726f6e6f6c6f677974001a4c6f72672f6a6f64612f74696d652f4368726f6e6f6c6f67793b78700000000000000000737200276f72672e6a6f64612e74696d652e6368726f6e6f2e49534f4368726f6e6f6c6f67792453747562a9c811667137502703000078707372001f6f72672e6a6f64612e74696d652e4461746554696d655a6f6e652453747562a62f019a7c321ae30300007870770500035554437878
如何从这个字符串中提取时间?
在将数据类型更改为字符串之前,您应该已经完成数据迁移。
这是你应该做的。1. 将字段的数据类型更改回 LocalTime。2. 使用字符串日期创建一个新字段。3. 编写一个脚本,获取 LocalTime 中的所有日期并将其转换为字符串并将其保存在新字段中。4. 迁移数据后,删除旧字段,然后将新字段重命名为持续时间。