2016-11-23 11 views
5

enter image description here Tôi đang sử dụng JsonNode để lấy dữ liệu từ bất kỳ loại định dạng jason và lưu trữ nó để MongoDB Nhưng trong khi lấy dữ liệu từ mongoDB nó là ném lỗi như dưới đây.Không thể nhanh chóng com.fasterxml.jackson.databind.node.ObjectNode sử dụng constructor NO_CONSTRUCTOR với lập luận Trong MongoDB

Failed to instantiate com.fasterxml.jackson.databind.node.ObjectNode using constructor NO_CONSTRUCTOR with arguments

Dưới đây là lớp tên miền của tôi

public class Profiler { 

@Id 
private String id; 

@Field("email") 
private String email; 

@Field("profiler") 
private Map<String,JsonNode> profiler; 

public String getEmail() { 
    return email; 
} 
public void setEmail(String email) { 
    this.email = email; 
} 
public Map<String, JsonNode> getProfiler() { 
    return profiler; 
} 
public void setProfiler(Map<String, JsonNode> profiler) { 
    this.profiler = profiler; 
} 
public Profiler(String email,Map<String,JsonNode> profiler){ 
    this.email=email; 
    this.profiler = profiler; 
} 
@JsonCreator 
public Profiler(@JsonProperty("_id")String id,@JsonProperty("email")String email,@JsonProperty("profiler")Map<String,JsonNode> profiler){ 
    this.id=id; 
    this.email=email; 
    this.profiler = profiler; 
} 
public Profiler(String id){ 
    this.id=id; 
} 
public Profiler(Map<String,JsonNode> profiler){ 
    this.profiler = profiler; 
} 
public Profiler(){ 

} 

} 



public interface ProfilerRepository extends MongoRepository<Profiler, String>{ 
public Profiler findOneByEmail(String email); 
} 

Và cuộc gọi điều khiển của tôi là như dưới đây và tôi nhận được lỗi trên dòng này.

Profiler profile=profileService.findOneByEmail(email); 
+0

Bạn có thể hiển thị tài liệu mongo của mình không? – notionquest

Trả lời

4

Tôi đã thực hiện thay đổi này và hoạt động như mong đợi.

Map<String, Object> profile; 
1

Vấn đề này xảy ra do lớp com.fasterxml.jackson.databind.node.ObjectNode không có hàm tạo mặc định (không có hàm tạo đối số) và Jackson mong đợi hàm tạo mặc định.

Related Post refer azerafati's answer

Vấn đề có thể được giải quyết nếu bạn xác định các lĩnh vực như profiler tĩnh trong lớp miền.

private static Map<String, JsonNode> profiler; 

Xin lưu ý rằng các trường tĩnh có những hạn chế và vấn đề riêng. Tôi có thể đảm bảo rằng điều này sẽ giải quyết ngoại lệ trên. Tuy nhiên, nó có thể không phải là giải pháp thích hợp nhất.

+0

Tôi đã thử cùng nhưng nó không hoạt động. nhưng tôi đã làm một thay đổi thay vì JsonNode tôi đã sử dụng Object như Map profiler; và làm việc như exprected. –

Các vấn đề liên quan