开发者社区> 问答> 正文

spring整合mongodb时,无法写入数据,请大神帮助?报错

在用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)

请有过这方面经验帮助,急用

展开
收起
爱吃鱼的程序员 2020-06-07 21:53:39 882 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    将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>
    
    2020-06-07 21:53:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载