我将spring data mongodb(使用maven)版本升级到1.9.5。释放。(使用MongoClient而不是Mongo)。我的会话文档类包含@LastModifiedDate注释。
升级后,我得到了java。lang.IllegalArgumentException:不支持的实体com。。。一场无法确定IsNewStrategy。
如果我从配置中删除,我不会得到错误,但它不会保存modifiedDate。我找到的所有解决方案都与使用注释而不是xml文件的MongoDB配置相关。我如何解决这个问题?
Maven依赖项:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.9.5.RELEASE</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.5</version>
</dependency>
Spring MongoDB配置包含:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/context classpath:org/springframework/context/factory/xml/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo classpath:org/springframework/data/mongo/factory/xml/spring-mongo-1.8.xsd
http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http://www.springframework.org/schema/util classpath:org/springframework/util/factory/xml/spring-util-3.0.xsd">
<bean class="com.....core.CascadingMongoEventListener"/>
<bean class="com.....core.DataEventListener"/>
<mongo:auditing/>
<mongo:mongo-client id="mongo" host="${host}" port="${port}">
<mongo:client-options connections-per-host="100"
connect-timeout="30000"
max-wait-time="15000"
socket-keep-alive="true"
socket-timeout="60000" />
</mongo:mongo-client>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo" />
<constructor-arg name="databaseName" value="${dbName}"/>
<property name="writeConcern">
<util:constant static-field="com.mongodb.WriteConcern.SAFE" ></util:constant>
</property>
</bean>
<mongo:repositories base-package="com.....daos" mongo-template-ref="mongoTemplate">
</mongo:repositories>
<context:component-scan base-package="com.....services"></context:component-scan>
<!-- translate any MongoExceptions thrown in @Repository annotated classes -->
<context:annotation-config />
</beans>
我的文档:
package com.....session;
import java.util.Date;
import java.util.UUID;
import org.joda.time.DateTime;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.LastModifiedDate;
@Document(collection = "session")
public class Session {
@Id
protected UUID id;
private DateTime creationDate;
@LastModifiedDate
private DateTime modifiedDate;
public Session() {}
//setters & getters
}
诀窍是在审核和MongoTemplate之间共享MongoMappingContext。
第一次替换:
<mongo:auditing/>
与:
<bean id="mappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />
<mongo:auditing mapping-context-ref="mappingContext"/>
然后将MongoDbFactory
和MongoConverter
添加到您的xml设置中,如下所示:
<mongo:db-factory id="mongoDbFactory" mongo-ref="mongo" dbname="${dbName}"/>
<mongo:mapping-converter id="mongoConverter" db-factory-ref="mongoDbFactory" mapping-context-ref="mappingContext"/>
最后要做的是将MongoConverter
注入模板。它为MongoTemboard
提供映射上下文。您必须为此使用替代构造函数。
替换:
<constructor-arg name="mongo" ref="mongo" />
<constructor-arg name="databaseName" value="${dbName}"/>
与:
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
<constructor-arg name="mongoConverter" ref="mongoConverter"/>
我使用S#Arplite开发了webapp,用于构建一个查询,从许多表中获取一个列表。使用NHibernate版本3.3.1.4000 当应用程序运行时,我得到了一个错误,例如 这是我的代码
MongoDB 4.0将引入具有ACID保证的事务支持。 Spring Data MongoDB是否已经支持MongoDB中的事务,如果不是,那么这个很棒的功能何时可用。我真的需要它,考虑到以下问题 - MongoDB模式设计,以支持应用程序水平扩展
我将我的应用程序从spring boot 2.2.5升级到2.3.3,并且我正在使用spring data JPA starter和5.4.20.Final板载。我的实体在编译时得到了增强。 现在,当我使用注释与属性覆盖来自的方法时,我收到了这个警告: 即使这个警告-图是正确获取-我只能看到一个SQL查询日志和应用程序的行为之前的更新。 这是我的存储库代码: 这是我的实体: 如何解决此警告?我可以
这以前适用于.NET 4.6上的ASP.NET MVC 5。
我正在尝试‘获取’一个rss提要。 当我检查“res”里面是什么的时候。它似乎得到了整个XML。但后来,我试图解码它,我得到: