'Spring Boot MongoDB Can't find a codec for class
I'm new to MongoDb, I pulled a simple aggregation from compass. Now I am trying to return the data, unfortunately I am getting this error: Caused by: org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class com.example.DemoMongo.model.User. this is my configuration in spring boot:
Model
@Document("user")
public class User {
@Id
private String id;
private String name;
private List<Indirizzi> indirizzi;
public String getId() {
return id;
}
public String getName() {
return name;
}
public List<Indirizzi> getIndirizzi() {
return indirizzi;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setIndirizzi(List<Indirizzi> indirizzi) {
this.indirizzi = indirizzi;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", indirizzi=" + indirizzi + "]";
}
@Document("indirizzi")
public class Indirizzi {
@Id
private String id;
private String via;
public String getId() {
return id;
}
public String getVia() {
return via;
}
public void setId(String id) {
this.id = id;
}
public void setVia(String via) {
this.via = via;
}
@Override
public String toString() {
return "Indirizzi [id=" + id + ", via=" + via + "]";
}
}
Repository
public class UserRepositoryImpl implements UserCustomRepository {
private final MongoTemplate mongoTemplate;
@Autowired
public UserRepositoryImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public List<User> getUser() {
MongoCollection<Document> collection = this.mongoTemplate.getCollection("user");
AggregateIterable<User> result = collection.aggregate(Arrays.asList(new Document("$lookup",
new Document("from", "indirizzi")
.append("localField", "indirizzi")
.append("foreignField", "_id")
.append("as", "indirizzi"))),User.class);
List<User> list= new ArrayList<>();
MongoCursor<User> iterator = result.iterator(); //<- ERROR! Can't find a codec for class com.example.DemoMongo.model.User.
while (iterator.hasNext()) {
User user = iterator.next();
list.add(user);
}
return null;
}
}
public interface UserRepository extends MongoRepository<User,String>,UserCustomRepository{
public List<User>getUser();
}
public interface UserCustomRepository {
List<User> getUser();
}
POM dependencies
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Thanks in advance
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
