在用spring整合mongodb时,无法写入数据,详细的相关代码如下:
@Repository(value="userSessionLogDao")
public class UserSessionLogDao implements MongoBase<UserSessionLog> {
@Resource
@Autowired
private MongoTemplate mongoTemplate;
@Override
public void insert(UserSessionLog object, String collectionName) {
if(this.mongoTemplate==null) {
return;
}
mongoTemplate.insert(object, collectionName);
}
}
@Document(collection="LoginLog")
public class UserSessionLog implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Oid _id;
@Indexed
@Field(value = "userid")
private long userid;
@Field(value = "username")
private String username;
@Field(value = "loginip")
private String loginip;
@Field(value = "logintime")
private String logintime;
@Field(value = "logintype")
private int logintype;
public Oid get_id() {
return _id;
}
public void set_id(Oid _id) {
this._id = _id;
}
public long getUserid() {
return userid;
}
public void setUserid(long userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getLoginip() {
return loginip;
}
public void setLoginip(String loginip) {
this.loginip = loginip;
}
public String getLogintime() {
return logintime;
}
public void setLogintime(String logintime) {
this.logintime = logintime;
}
public int getLogintype() {
return logintype;
}
public void setLogintype(int logintype) {
this.logintype = logintype;
}
}
调用代码
UserSessionLog userlog=new UserSessionLog();
userlog.setUserid(pDto.getAsLong("userId"));
userlog.setUsername(pDto.getAsString("userName"));
userlog.setLoginip(pDto.getAsString("loginIp"));
userlog.setLogintype(pDto.getAsInteger("rType"));
userlog.setLogintime(FredaUtils.getCurrentTime());
// this.userSessionLogDao.createCollection(this.collectionName);
this.userSessionLogDao.insert(userlog, this.collectionName);
spring配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-2.0.xsd
http://www.springframework.org/schema/data/repository
http://www.springframework.org/schema/data/repository/spring-repository-1.7.xsd">
<mongo:mongo-client id="mongo" host="${mongo.host}" port="${mongo.port}">
<mongo:client-options
connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection- multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
write-concern="SAFE"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"/>
</mongo:mongo-client>
<!-- 设置使用的数据库 名 -->
<mongo:db-factory id="mongoDbFactory" dbname="rzndb" mongo-ref="mongo" />
<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>
<!-- mongodb的模板 -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>
执行报错
java.lang.NoSuchMethodError: org.springframework.util.Assert.isTrue(ZLjava/util/function/Supplier;)V
at org.springframework.data.mapping.model.BasicPersistentEntity.getPropertyAccessor(BasicPersistentEntity.java:427)
at org.springframework.data.mongodb.core.MongoTemplate.assertUpdateableIdIfNotSet(MongoTemplate.java:1563)
at org.springframework.data.mongodb.core.MongoTemplate.doInsert(MongoTemplate.java:1057)
at org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:999)
at net.hbzs.rzn.common.dao.UserSessionLogDao.insert(UserSessionLogDao.java:35)
请有过这方面经验帮助,急用
将spring-data-mongodb换成1.10.9的版本就行了,用2.x都不行,怀疑是2.x变化太大,用法不一样,请有过这方面经验的人分享一下
果不其然,换了这个版本jar就好了,太谢谢你的,这个坑了我好久时间
<p> 单纯从报错来看</p>
org.springframework.data.mapping.model.BasicPersistentEntity
org.springframework.util.Assert
这两个类所在的jar包,版本不兼容吧
<p>如何解决??</p>
<p>我的spring4.3.13,spring-data-mongodb2.0.2,spring-data-commons2.0.2,mybatis3.4.5</p>
<p>用1.8编译1.8运行试试,不要1.5编译1.8运行这样存在差异的</p>
<p>都是jdk1.8运行的</p>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。