Skip to content

Commit 042f8e4

Browse files
authored
Merge pull request #45 from kaiso/B#44
[B#44] E11000 duplicate key error collection
2 parents d1cdd9e + 18c294a commit 042f8e4

19 files changed

+481
-313
lines changed

Diff for: pom.xml

+10-21
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>io.github.kaiso.relmongo</groupId>
77
<artifactId>relmongo</artifactId>
8-
<version>3.0.1</version>
8+
<version>3.1.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>relmongo</name>
@@ -18,9 +18,9 @@
1818
<maven.compiler.target>1.8</maven.compiler.target>
1919
<maven.plugin.source.version>3.0.1</maven.plugin.source.version>
2020
<maven.plugin.javadoc.version>3.0.1</maven.plugin.javadoc.version>
21-
<spring.data.version>2.1.8.RELEASE</spring.data.version>
22-
<spring.version>5.1.7.RELEASE</spring.version>
23-
<mongo.driver.version>3.9.1</mongo.driver.version>
21+
<spring.data.version>2.2.1.RELEASE</spring.data.version>
22+
<spring.version>5.2.1.RELEASE</spring.version>
23+
<mongo.driver.version>3.11.2</mongo.driver.version>
2424
<junit.jupiter.version>5.4.1</junit.jupiter.version>
2525
<junit.platform.version>1.4.2</junit.platform.version>
2626
</properties>
@@ -61,42 +61,31 @@
6161
<dependency>
6262
<groupId>org.springframework.data</groupId>
6363
<artifactId>spring-data-mongodb</artifactId>
64-
<exclusions>
65-
<exclusion>
66-
<groupId>org.mongodb</groupId>
67-
<artifactId>mongo-java-driver</artifactId>
68-
</exclusion>
69-
</exclusions>
7064
<version>${spring.data.version}</version>
7165
<scope>provided</scope>
7266
</dependency>
67+
7368
<dependency>
7469
<groupId>org.springframework</groupId>
7570
<artifactId>spring-beans</artifactId>
7671
<version>${spring.version}</version>
7772
<scope>provided</scope>
7873
</dependency>
74+
7975
<dependency>
8076
<groupId>org.springframework</groupId>
8177
<artifactId>spring-core</artifactId>
8278
<version>${spring.version}</version>
8379
<scope>provided</scope>
8480
</dependency>
8581

86-
<dependency>
87-
<groupId>org.mongodb</groupId>
88-
<artifactId>mongodb-driver</artifactId>
89-
<version>${mongo.driver.version}</version>
90-
<scope>provided</scope>
91-
</dependency>
9282

9383
<dependency>
94-
<groupId>org.mongodb</groupId>
95-
<artifactId>mongo-java-driver</artifactId>
96-
<version>${mongo.driver.version}</version>
84+
<groupId>org.mongodb</groupId>
85+
<artifactId>mongodb-driver-async</artifactId>
86+
<version>${mongo.driver.version}</version>
9787
</dependency>
9888

99-
10089
<!-- test dependencies -->
10190
<dependency>
10291
<groupId>org.junit.jupiter</groupId>
@@ -115,7 +104,7 @@
115104
<dependency>
116105
<groupId>de.flapdoodle.embed</groupId>
117106
<artifactId>de.flapdoodle.embed.mongo</artifactId>
118-
<version>2.1.1</version>
107+
<version>2.2.0</version>
119108
<scope>test</scope>
120109
</dependency>
121110
<dependency>

Diff for: src/main/java/io/github/kaiso/relmongo/annotation/ManyToOne.java

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package io.github.kaiso.relmongo.annotation;
1818

19+
import org.springframework.data.annotation.Reference;
20+
1921
import java.lang.annotation.ElementType;
2022
import java.lang.annotation.Retention;
2123
import java.lang.annotation.RetentionPolicy;
@@ -30,6 +32,7 @@
3032
*/
3133
@Retention(RetentionPolicy.RUNTIME)
3234
@Target(ElementType.FIELD)
35+
@Reference
3336
public @interface ManyToOne {
3437
/**
3538
* (Optional) Whether the association should be lazily loaded or must be eagerly

Diff for: src/main/java/io/github/kaiso/relmongo/annotation/OneToMany.java

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package io.github.kaiso.relmongo.annotation;
1818

19+
import org.springframework.data.annotation.Reference;
20+
1921
import java.lang.annotation.ElementType;
2022
import java.lang.annotation.Retention;
2123
import java.lang.annotation.RetentionPolicy;
@@ -30,6 +32,7 @@
3032
*/
3133
@Retention(RetentionPolicy.RUNTIME)
3234
@Target(ElementType.FIELD)
35+
@Reference
3336
public @interface OneToMany {
3437

3538
/**

Diff for: src/main/java/io/github/kaiso/relmongo/annotation/OneToOne.java

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package io.github.kaiso.relmongo.annotation;
1818

19+
import org.springframework.data.annotation.Reference;
20+
1921
import java.lang.annotation.ElementType;
2022
import java.lang.annotation.Retention;
2123
import java.lang.annotation.RetentionPolicy;
@@ -30,6 +32,7 @@
3032
*/
3133
@Retention(RetentionPolicy.RUNTIME)
3234
@Target(ElementType.FIELD)
35+
@Reference
3336
public @interface OneToOne {
3437
/**
3538
* (Optional) Whether the association should be lazily loaded or must be eagerly

Diff for: src/main/java/io/github/kaiso/relmongo/config/PersistenceConfiguration.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,19 @@
2121

2222
import org.springframework.context.annotation.Bean;
2323
import org.springframework.context.annotation.Configuration;
24+
import org.springframework.data.mongodb.core.MongoOperations;
25+
2426
/**
2527
*
26-
* @author Kais OMRI
28+
* @author Kais OMRI (kaiso)
2729
*
2830
*/
2931
@Configuration
3032
public class PersistenceConfiguration {
3133

3234
@Bean
33-
public RelMongoProcessor mongoEventListener() {
34-
return new RelMongoProcessor();
35+
public RelMongoProcessor mongoEventListener(MongoOperations mongoOperations) {
36+
return new RelMongoProcessor(mongoOperations);
3537
}
3638

3739
}

Diff for: src/main/java/io/github/kaiso/relmongo/events/processor/RelMongoProcessor.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import io.github.kaiso.relmongo.model.LoadableObjectsMetadata;
2626
import io.github.kaiso.relmongo.mongo.PersistentRelationResolver;
2727

28-
import org.springframework.beans.factory.annotation.Autowired;
2928
import org.springframework.data.mongodb.core.MongoOperations;
3029
import org.springframework.data.mongodb.core.mapping.Document;
3130
import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener;
@@ -46,8 +45,12 @@
4645
*/
4746
public class RelMongoProcessor extends AbstractMongoEventListener<Object> {
4847

49-
@Autowired
5048
private MongoOperations mongoOperations;
49+
50+
public RelMongoProcessor(MongoOperations mongoOperations) {
51+
super();
52+
this.mongoOperations = mongoOperations;
53+
}
5154

5255
@Override
5356
public void onAfterLoad(AfterLoadEvent<Object> event) {

Diff for: src/main/java/io/github/kaiso/relmongo/mongo/DatabaseOperations.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ public static <T> Collection<T> findByIds(MongoOperations mongoOperations, Class
7272
}
7373

7474
public static <T> T findByPropertyValue(MongoOperations mongoOperations, Class<T> clazz, String propertyName, Object value) {
75-
Query query = new Query();
76-
query.addCriteria(Criteria.where(propertyName).is(value));
77-
return mongoOperations.findOne(query, clazz);
75+
BasicDBObject query = new BasicDBObject(propertyName, new BasicDBObject("$eq", value));
76+
FindIterable<Document> result = mongoOperations.getCollection(mongoOperations.getCollectionName(clazz)).find(query).limit(1);
77+
return result.iterator().hasNext() ? mongoOperations.getConverter().read(clazz,result.iterator().next()) : null;
7878
}
7979

8080
public static void saveObjects(MongoOperations mongoOperations, Object obj) {

0 commit comments

Comments
 (0)