Java Spring MongoDB插入不需要的对象
我找不到任何关于这个问题的网页或其他帖子。因此,我在这里发帖 在我存储到mongodb的文档中,我显示了以下内容:Java Spring MongoDB插入不需要的对象,java,spring,mongodb,Java,Spring,Mongodb,我找不到任何关于这个问题的网页或其他帖子。因此,我在这里发帖 在我存储到mongodb的文档中,我显示了以下内容: "itemModifiers" : [ { "val$implicitModifierString" : "16% increased Spell Damage", "modifierName" : "16% increased Spell Damage" } ] val$implicitModifierString实际上是我的Java代码中的一个变量,它
"itemModifiers" : [
{
"val$implicitModifierString" : "16% increased Spell Damage",
"modifierName" : "16% increased Spell Damage"
}
]
val$implicitModifierString
实际上是我的Java代码中的一个变量,它没有设置为ItemModifiers.class
实例。基本上,当我在我的类中设置一个存储到MongoDb的变量时,我用来设置该变量的任何变量或对象也会存储到数据库中(或者至少在我看来是这样的!)
下面是流程的一些示例代码(如果您不喜欢地图,很抱歉;这里不太相关):
这个ItemModifiers.class
保存在ItemDocument.class
中,只需调用mongoperations.insert(itemDocumentInstance)即可存储到mongo数据库中代码>
如果有必要,这是我的mongoConfig.xml:
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:mongo host="127.0.0.1" port="27017"/>
<mongo:db-factory dbname="public-stash-api"/>
<bean id="mappingContext"
class="org.springframework.data.mongodb.core.mapping.MongoMappingContext"/>
<bean id="defaultMongoTypeMapper"
class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
<constructor-arg name="typeKey">
<null/>
</constructor-arg>
</bean>
<bean id="mappingMongoConverter"
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
<constructor-arg name="mappingContext" ref="mappingContext"/>
<property name="typeMapper" ref="defaultMongoTypeMapper"/>
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
<constructor-arg name="mongoConverter" ref="mappingMongoConverter"/>
</bean>
</beans>
提前感谢您的帮助 你把Jackson和MongoDB混在一起了。MongoDB使用文档并不意味着它在使用Jackson。MongoDB以BSON(二进制JSON)格式存储文档,但不能使用Jackson注释自定义文档的存储方式
SpringDataMongoDB注释(比如org.springframework.Data.MongoDB.core.mapping.Field
)就是为了这个目的。实际上,您在代码中使用了其中一个(org.springframework.data.mongodb.core.index.index
)。事实证明,这就是罪魁祸首:
return new ItemModifier() {{
setModifierName(modifier);
setModifierTerm(termMap.get(outerKey.pattern()));
setModifierTier(innerMap.get(innerKey));
setModifierType(itemModifierType);
setModifierValues(tierValues);
}};
静态实例化是导致奇怪的val$inputVariables
通过Spring持久化到Mongo文档中的原因。是否有任何类将Map作为属性?尤其是ItemModifierMember变量的复合对象都是Enum、Double[]、Double或String。没有地图,这是一个很好的观点。我已经纠正了这一点(将JsonProoerty(“…”)更改为字段(“…”),但结果没有更改。
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:mongo host="127.0.0.1" port="27017"/>
<mongo:db-factory dbname="public-stash-api"/>
<bean id="mappingContext"
class="org.springframework.data.mongodb.core.mapping.MongoMappingContext"/>
<bean id="defaultMongoTypeMapper"
class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
<constructor-arg name="typeKey">
<null/>
</constructor-arg>
</bean>
<bean id="mappingMongoConverter"
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
<constructor-arg name="mappingContext" ref="mappingContext"/>
<property name="typeMapper" ref="defaultMongoTypeMapper"/>
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
<constructor-arg name="mongoConverter" ref="mappingMongoConverter"/>
</bean>
</beans>
return new ItemModifier() {{
setModifierName(modifier);
setModifierTerm(termMap.get(outerKey.pattern()));
setModifierTier(innerMap.get(innerKey));
setModifierType(itemModifierType);
setModifierValues(tierValues);
}};