Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java readString只能在CurrentBSONType为STRING时调用,而不能在CurrentBSONType为INT64时调用_Java_Spring_Mongodb_Spring Data Mongodb - Fatal编程技术网

Java readString只能在CurrentBSONType为STRING时调用,而不能在CurrentBSONType为INT64时调用

Java readString只能在CurrentBSONType为STRING时调用,而不能在CurrentBSONType为INT64时调用,java,spring,mongodb,spring-data-mongodb,Java,Spring,Mongodb,Spring Data Mongodb,读取POJO时发生以下错误,请确保能够成功插入、更新和删除 audid的类型是字符串,大多数读取是正常的 mongo-java-driver-3.8.2.jar 守则的一部分: public class TestData implements Serializable { private String audid; } 错误发生在FindItemerable.iterator()中 FindIterable FindIterable=testCollection.find(过滤器,Te

读取POJO时发生以下错误,请确保能够成功插入、更新和删除

audid的类型是字符串,大多数读取是正常的

mongo-java-driver-3.8.2.jar

守则的一部分:

public class TestData implements Serializable {

  private String audid;

}
错误发生在FindItemerable.iterator()中

FindIterable FindIterable=testCollection.find(过滤器,TestData.class)
.sort(排序)
.批量大小(1000);
如果(0!=限制){
findItemable.limit(极限);
}
MongoCursor dbCursor=findItemerable.iterator();
错误日志:

org.bson.codecs.configuration.CodecConfigurationException: An exception occurred when decoding using the AutomaticPojoCodec.
Decoding into a 'TestData' failed with the following exception:

Failed to decode 'TestData'. Decoding 'audid' errored with: readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is INT64.

A custom Codec or PojoCodec may need to be explicitly configured and registered to handle this type.
    at org.bson.codecs.pojo.AutomaticPojoCodec.decode(AutomaticPojoCodec.java:40)
    at com.mongodb.operation.CommandResultArrayCodec.decode(CommandResultArrayCodec.java:52)
    at com.mongodb.operation.CommandResultDocumentCodec.readValue(CommandResultDocumentCodec.java:60)
    at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:84)
    at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:41)
    at org.bson.codecs.configuration.LazyCodec.decode(LazyCodec.java:47)
    at org.bson.codecs.BsonDocumentCodec.readValue(BsonDocumentCodec.java:101)
    at com.mongodb.operation.CommandResultDocumentCodec.readValue(CommandResultDocumentCodec.java:63)
    at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:84)
    at org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:41)
    at com.mongodb.internal.connection.ReplyMessage.<init>(ReplyMessage.java:48)
    ...
Caused by: org.bson.codecs.configuration.CodecConfigurationException: Failed to decode 'TestData'. Decoding 'audid' errored with: readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is INT64.
    at org.bson.codecs.pojo.PojoCodecImpl.decodePropertyModel(PojoCodecImpl.java:195)
    at org.bson.codecs.pojo.PojoCodecImpl.decodeProperties(PojoCodecImpl.java:173)
    at org.bson.codecs.pojo.PojoCodecImpl.decode(PojoCodecImpl.java:127)
    at org.bson.codecs.pojo.PojoCodecImpl.decode(PojoCodecImpl.java:131)
    at org.bson.codecs.pojo.AutomaticPojoCodec.decode(AutomaticPojoCodec.java:37)
    ... 45 common frames omitted
Caused by: org.bson.BsonInvalidOperationException: readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is INT64.
    at org.bson.AbstractBsonReader.verifyBSONType(AbstractBsonReader.java:690)
    at org.bson.AbstractBsonReader.checkPreconditions(AbstractBsonReader.java:722)
    at org.bson.AbstractBsonReader.readString(AbstractBsonReader.java:457)
    at org.bson.codecs.StringCodec.decode(StringCodec.java:39)
    at org.bson.codecs.StringCodec.decode(StringCodec.java:28)
    at org.bson.codecs.DecoderContext.decodeWithChildContext(DecoderContext.java:93)
    at org.bson.codecs.pojo.PojoCodecImpl.decodePropertyModel(PojoCodecImpl.java:189)
    ... 49 common frames omitted
org.bson.codecs.configuration.CodecConfigurationException:使用AutomaticPojoDec进行解码时发生异常。
解码为“TestData”失败,出现以下异常:
未能解码“TestData”。解码“audid”时出错:仅当CurrentBSONType为STRING时才能调用readString,而当CurrentBSONType为INT64时不能调用readString。
可能需要显式配置和注册自定义编解码器或PojoCodec以处理此类型。
位于org.bson.codecs.pojo.AutomaticPojoCodec.decode(AutomaticPojoCodec.java:40)
位于com.mongodb.operation.commandResultaryCodec.decode(commandResultaryCodec.java:52)
位于com.mongodb.operation.CommandResultDocumentCodec.readValue(CommandResultDocumentCodec.java:60)
位于org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:84)
位于org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:41)
位于org.bson.codecs.configuration.LazyCodec.decode(LazyCodec.java:47)
位于org.bson.codecs.BsonDocumentCodec.readValue(BsonDocumentCodec.java:101)
位于com.mongodb.operation.CommandResultDocumentCodec.readValue(CommandResultDocumentCodec.java:63)
位于org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:84)
位于org.bson.codecs.BsonDocumentCodec.decode(BsonDocumentCodec.java:41)
位于com.mongodb.internal.connection.ReplyMessage(ReplyMessage.java:48)
...
原因:org.bson.codecs.configuration.CodecConfigurationException:未能解码“TestData”。解码“audid”时出错:仅当CurrentBSONType为STRING时才能调用readString,而当CurrentBSONType为INT64时不能调用readString。
位于org.bson.codecs.pojo.PojoCodecImpl.decodePropertyModel(PojoCodecImpl.java:195)
位于org.bson.codecs.pojo.PojoCodecImpl.decodeProperties(PojoCodecImpl.java:173)
位于org.bson.codecs.pojo.PojoCodecImpl.decode(PojoCodecImpl.java:127)
位于org.bson.codecs.pojo.PojoCodecImpl.decode(PojoCodecImpl.java:131)
位于org.bson.codecs.pojo.AutomaticPojoCodec.decode(AutomaticPojoCodec.java:37)
... 省略45个公共框架
原因:org.bson.BsonInvalidOperationException:readString只能在CurrentBSONType为STRING时调用,而不能在CurrentBSONType为INT64时调用。
在org.bson.AbstractBsonReader.verifyBSONType上(AbstractBsonReader.java:690)
在org.bson.AbstractBsonReader.checkPremissions上(AbstractBsonReader.java:722)
位于org.bson.AbstractBsonReader.readString(AbstractBsonReader.java:457)
位于org.bson.codecs.StringCodec.decode(StringCodec.java:39)
位于org.bson.codecs.StringCodec.decode(StringCodec.java:28)
位于org.bson.codecs.DecoderContext.decodecWithChildContext(DecoderContext.java:93)
位于org.bson.codecs.pojo.PojoCodecImpl.decodePropertyModel(PojoCodecImpl.java:189)
... 省略49个公共框架

请在
TestData
类中使用以下代码

    @BsonId
    private String audid;

    public String getAudid(){
        return audid;
    }
    public void setAudid(String audid){
        this.audid = audid;
    }

另外,在插入数据时,请确保将
audid
作为字符串传递,即在双引号(“”)内。

您可以尝试查看字段的数据类型是否不同于文档的字符串-您可以编写mongo shell查询,使用
$type
检查值是否为字符串。
    @BsonId
    private String audid;

    public String getAudid(){
        return audid;
    }
    public void setAudid(String audid){
        this.audid = audid;
    }