繁体   English   中英

在mongodb中使用ISODate和play morphia

[英]use ISODate in mongodb with play morphia

我想将值的日期类型保存为mongodb作为ISODate或具有play-morphia的任何类似日期类型。 但是,当我尝试将以下类保存到mongodb时,它将在lastcheckin上引发异常。 当我将其类型更改为String时,它工作正常。 是因为我没有在JAVA中使用正确的数据类型来映射到mongodb中的ISODate吗?

@Entity(value = "devices", noClassnameStored = true)
public class Device {
    public String ip;
    public String mac;
    public Date lastcheckin;
}

将当前日期分配给lastcheckin属性

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
        device.lastcheckin = sdf.parse(Calendar.getInstance().getTime().toString());
    }
catch (ParseException e){
        PlayLogger.instance().info(e.getMessage());
}

得到了以下堆栈跟踪

Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException
    at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:27)
    at com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:497)
    at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:480)
    ... 51 more
Caused by: java.lang.IllegalArgumentException
    at java.util.Date.parse(Date.java:615)
    at com.google.code.morphia.converters.DateConverter.decode(DateConverter.java:32)
    at com.google.code.morphia.converters.DefaultConverters.fromDBObject(DefaultConverters.java:129)
    at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:25)
    ... 53 more

只要是java.util.Date ,通常就可以了。

PS: public属性应设为private / protected以及获取器和设置器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM