Spring boot 无法评估spring引导api中的Jackson反序列化 包lk.andunaechomedia.models; 导入com.fasterxml.jackson.annotation.*; 导入org.hibernate.annotations.OnDelete; 导入org.hibernate.annotations.OnDeleteAction; 导入javax.persistence.*; 导入java.util.Date; @实体 公共类设备{ @身份证 专用字符串设备_id; 私有字符串客户名称; 私有字符串起始点; 私有字符串端点; 专用字符串设备地址; 专用字符串电话号码; 私人日期发布日期; @manytone(cascade=CascadeType.PERSIST) @JoinColumn(name=“设备组组id”) 专用设备组设备组; 公共设备(){ } 公共设备(字符串设备标识、字符串客户名称、字符串起点、字符串终点、字符串设备地址、字符串电话号码、发布日期){ 此.setDevice_id(device_id); 此.setCustomer\u name(customer\u name); 此.setStart_点(start_点); 此。设置结束点(结束点); 此.setDevice\u地址(device\u地址); 这是一个电话号码; 此.setPublish_date(publish_date); } 公用设备组getDevice组(){ 返回装置组; } 公用无效设置设备组(设备组设备组){ this.device\u group=设备组; } 公共字符串getDevice_id(){ 返回设备标识; } 公共无效设置设备id(字符串设备id){ this.device\u id=设备\u id; } 公共字符串getCustomer_name(){ 返回客户名称; } public void setCustomer\u name(字符串customer\u name){ this.customer\u name=客户名称; } 公共字符串getStart_point(){ 返回起始点; } 公共无效设置起始点(字符串起始点){ this.start\u point=起点; } 公共字符串getEnd_point(){ 返回终点; } 公共无效设置结束点(字符串结束点){ this.end_point=end_point; } 公共字符串getDevice_address(){ 返回设备地址; } 公共无效设置设备地址(字符串地址){ this.device_address=地址; } 公共字符串getTel_number(){ 返回电话号码; } 公共无效设置电话号码(字符串电话){ this.tel_number=电话号码; } 公共日期getPublish_Date(){ 返回发布日期; } 公共作废设置发布日期(发布日期){ this.publish_date=publish_date; } /*public void updatePartial(设备、字符串设备id){ Device newDevice=deviceepo.findOne(设备id); if(device.getCustomer\u name()!=null){ newDevice.setCustomer_name(device.getCustomer_name()); } if(device.getStart\u point()!=null){ newDevice.setStart_point(device.getStart_point()); } if(device.getEnd_point()!=null){ newDevice.setEnd_point(device.getEnd_point()); } if(device.getDevice_address()!=null){ newDevice.setDevice_地址(device.getDevice_地址()); } if(device.getTel_number()!=null){ newDevice.setTel_number(device.getTel_number()); } if(device.getPublish_date()!=null){ newDevice.setPublish_date(device.getPublish_date()); } }*/ } 包lk.andunaechomedia.models; 导入com.fasterxml.jackson.annotation.JsonBackReference; 导入com.fasterxml.jackson.annotation.JsonManagedReference; 导入javax.persistence.*; 导入java.util.Set; @实体 公共类设备组{ @身份证 私有字符串组标识; 私有字符串组名称; @OneToMany(mappedBy=“设备集团”) 专用设备; @许多酮 @JoinColumn(name=“device\u group\u group\u id”,nullable=false) 专用主表主表; 私有字符串temp_schedule_temp_id; @JsonBackReference(value=“用户移动”) 公共集getDevice(){ 返回装置; } 公共无效设置设备(设置设备){ 这个。设备=设备; } 公共字符串getGroup_id(){return group_id;} 公共无效集合组id(字符串组id){ this.group\u id=group\u id; } 公共字符串getGroup_name(){ 返回组名称; } 公共无效集合组名称(字符串组名称){ this.group\u name=group\u name; } @JsonBackReference(value=“用户移动”) public Main_schedule getMain_schedule_schedule_id(){ 返回主计划表; } 公共无效设置主计划主计划id(主计划主计划){ 这个.main_schedule=main_schedule; } 公共字符串getTemp\u schedule\u temp\u id(){ 返回临时计划临时id; } public void settmp\u schedule\u temp\u id(字符串temp\u schedule\u temp\u id){ 这个.temp\u schedule\u temp\u id=temp\u schedule\u temp\u id; } }

Spring boot 无法评估spring引导api中的Jackson反序列化 包lk.andunaechomedia.models; 导入com.fasterxml.jackson.annotation.*; 导入org.hibernate.annotations.OnDelete; 导入org.hibernate.annotations.OnDeleteAction; 导入javax.persistence.*; 导入java.util.Date; @实体 公共类设备{ @身份证 专用字符串设备_id; 私有字符串客户名称; 私有字符串起始点; 私有字符串端点; 专用字符串设备地址; 专用字符串电话号码; 私人日期发布日期; @manytone(cascade=CascadeType.PERSIST) @JoinColumn(name=“设备组组id”) 专用设备组设备组; 公共设备(){ } 公共设备(字符串设备标识、字符串客户名称、字符串起点、字符串终点、字符串设备地址、字符串电话号码、发布日期){ 此.setDevice_id(device_id); 此.setCustomer\u name(customer\u name); 此.setStart_点(start_点); 此。设置结束点(结束点); 此.setDevice\u地址(device\u地址); 这是一个电话号码; 此.setPublish_date(publish_date); } 公用设备组getDevice组(){ 返回装置组; } 公用无效设置设备组(设备组设备组){ this.device\u group=设备组; } 公共字符串getDevice_id(){ 返回设备标识; } 公共无效设置设备id(字符串设备id){ this.device\u id=设备\u id; } 公共字符串getCustomer_name(){ 返回客户名称; } public void setCustomer\u name(字符串customer\u name){ this.customer\u name=客户名称; } 公共字符串getStart_point(){ 返回起始点; } 公共无效设置起始点(字符串起始点){ this.start\u point=起点; } 公共字符串getEnd_point(){ 返回终点; } 公共无效设置结束点(字符串结束点){ this.end_point=end_point; } 公共字符串getDevice_address(){ 返回设备地址; } 公共无效设置设备地址(字符串地址){ this.device_address=地址; } 公共字符串getTel_number(){ 返回电话号码; } 公共无效设置电话号码(字符串电话){ this.tel_number=电话号码; } 公共日期getPublish_Date(){ 返回发布日期; } 公共作废设置发布日期(发布日期){ this.publish_date=publish_date; } /*public void updatePartial(设备、字符串设备id){ Device newDevice=deviceepo.findOne(设备id); if(device.getCustomer\u name()!=null){ newDevice.setCustomer_name(device.getCustomer_name()); } if(device.getStart\u point()!=null){ newDevice.setStart_point(device.getStart_point()); } if(device.getEnd_point()!=null){ newDevice.setEnd_point(device.getEnd_point()); } if(device.getDevice_address()!=null){ newDevice.setDevice_地址(device.getDevice_地址()); } if(device.getTel_number()!=null){ newDevice.setTel_number(device.getTel_number()); } if(device.getPublish_date()!=null){ newDevice.setPublish_date(device.getPublish_date()); } }*/ } 包lk.andunaechomedia.models; 导入com.fasterxml.jackson.annotation.JsonBackReference; 导入com.fasterxml.jackson.annotation.JsonManagedReference; 导入javax.persistence.*; 导入java.util.Set; @实体 公共类设备组{ @身份证 私有字符串组标识; 私有字符串组名称; @OneToMany(mappedBy=“设备集团”) 专用设备; @许多酮 @JoinColumn(name=“device\u group\u group\u id”,nullable=false) 专用主表主表; 私有字符串temp_schedule_temp_id; @JsonBackReference(value=“用户移动”) 公共集getDevice(){ 返回装置; } 公共无效设置设备(设置设备){ 这个。设备=设备; } 公共字符串getGroup_id(){return group_id;} 公共无效集合组id(字符串组id){ this.group\u id=group\u id; } 公共字符串getGroup_name(){ 返回组名称; } 公共无效集合组名称(字符串组名称){ this.group\u name=group\u name; } @JsonBackReference(value=“用户移动”) public Main_schedule getMain_schedule_schedule_id(){ 返回主计划表; } 公共无效设置主计划主计划id(主计划主计划){ 这个.main_schedule=main_schedule; } 公共字符串getTemp\u schedule\u temp\u id(){ 返回临时计划临时id; } public void settmp\u schedule\u temp\u id(字符串temp\u schedule\u temp\u id){ 这个.temp\u schedule\u temp\u id=temp\u schedule\u temp\u id; } },spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,这是一个错误 20-01-22星期三14:17:56.475警告映射Jackson2HttpMessageConverter 无法计算类型[[简单类型]的Jackson反序列化, 类lk.andunaechomedia.models.Device]]: com.fasterxml.jackson.databind.JsonMappingException:多个 名称为“用户移动”的反向参考属性20-01-22 Wed 14:17:56.475警告默认句柄异常解析程序已解决 [org.spring

这是一个错误 20-01-22星期三14:17:56.475警告映射Jackson2HttpMessageConverter 无法计算类型[[简单类型]的Jackson反序列化, 类lk.andunaechomedia.models.Device]]: com.fasterxml.jackson.databind.JsonMappingException:多个 名称为“用户移动”的反向参考属性20-01-22 Wed 14:17:56.475警告默认句柄异常解析程序已解决 [org.springframework.web.HttpMediaTypeNotSupportedException:内容 类型“application/json;charset=UTF-8”不受支持]

这是我的请求机构 {“设备id”:“bus009”,“客户名称”:“anura”, “起点”:“马塔拉”,“终点”:“科伦坡”, “设备地址”:“dikwella”,“电话号码”:“0712345678”, “发布日期”:“2020-10-10”,“设备组”:“138总线”}


您在对象树中将名称
用户移动
多次引用为
@JsonBackReference
。您需要重命名其中一个。这两个案例是:

package lk.andunaechomedia.models;

import com.fasterxml.jackson.annotation.*;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

import javax.persistence.*;
import java.util.Date;


@Entity
public  class Device {
    @Id
    private String device_id;
    private String customer_name;
    private String start_point;
    private String end_point;
    private String device_address;
    private String tel_number;
    private Date   publish_date;
    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name="device_group_group_id")
    private Device_group device_group;

    public Device() {
    }

    public Device(String device_id,String customer_name,String start_point, String end_points, String device_address, String tel_number, Date publish_date) {
        this.setDevice_id(device_id);
        this.setCustomer_name(customer_name);
        this.setStart_point(start_point);
        this.setEnd_point(end_points);
        this.setDevice_address(device_address);
        this.setTel_number(tel_number);
        this.setPublish_date(publish_date);

    }

    public Device_group getDevice_group() {
        return device_group;
    }

    public void setDevice_group(Device_group device_group) {
        this.device_group = device_group;
    }

    public String getDevice_id() {
        return device_id;
    }

    public void setDevice_id(String device_id) {
        this.device_id = device_id;
    }

    public String getCustomer_name() {
        return customer_name;
    }

    public void setCustomer_name(String customer_name) {
        this.customer_name = customer_name;
    }

    public String getStart_point() {
        return start_point;
    }

    public void setStart_point(String start_point) {
        this.start_point = start_point;
    }

    public String getEnd_point() {
        return end_point;
    }

    public void setEnd_point(String end_point) {
        this.end_point = end_point;
    }

    public String getDevice_address() {
        return device_address;
    }

    public void setDevice_address(String address) {
        this.device_address = address;
    }

    public String getTel_number() {
        return tel_number;
    }

    public void setTel_number(String telphone) {
        this.tel_number = telphone;
    }

    public Date getPublish_date() {
        return publish_date;
    }

    public void setPublish_date(Date publish_date) {
        this.publish_date = publish_date;
    }

    /*public void updatePartial(Device device, String deice_id){
        Device newDevice = deviceRepo.findOne(device_id);
        if (device.getCustomer_name() != null){
            newDevice.setCustomer_name(device.getCustomer_name());
        }
        if (device.getStart_point() != null){
            newDevice.setStart_point(device.getStart_point());
        }
        if (device.getEnd_point() != null){
            newDevice.setEnd_point(device.getEnd_point());
        }
        if (device.getDevice_address() != null){
            newDevice.setDevice_address(device.getDevice_address());
        }
        if (device.getTel_number() != null){
            newDevice.setTel_number(device.getTel_number());
        }
        if (device.getPublish_date() != null){
            newDevice.setPublish_date(device.getPublish_date());
        }
    }*/


}




package lk.andunaechomedia.models;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;

import javax.persistence.*;
import java.util.Set;

@Entity
public class Device_group {
   @Id
    private String group_id;
    private String group_name;
    @OneToMany(mappedBy = "device_group")
    private Set<Device> devices;
    @ManyToOne
    @JoinColumn(name="device_group_group_id", nullable=false)

    private Main_schedule main_schedule;
    private String temp_schedule_temp_id;
    @JsonBackReference(value="user-movement")
    public Set<Device> getDevice() {
        return devices;
    }

    public void setDevice(Set<Device> devices) {
        this.devices = devices;
    }

    public String getGroup_id(){ return group_id; }
     public void setGroup_id(String group_id){
      this.group_id=group_id;
     }

    public String getGroup_name(){
      return group_name;
     }
    public void setGroup_name(String group_name){
      this.group_name=group_name;
     }
    @JsonBackReference(value="user-movement")
    public Main_schedule getMain_schedule_schedule_id(){
      return main_schedule;
     }
    public void setMain_schedule_schedule_id(Main_schedule main_schedule){
      this.main_schedule=main_schedule;
     }

    public String getTemp_schedule_temp_id(){
      return temp_schedule_temp_id;
     }
    public void setTemp_schedule_temp_id(String temp_schedule_temp_id){
      this.temp_schedule_temp_id=temp_schedule_temp_id;
     }
}
请参阅更多:

您在对象树中将名称
用户移动
多次引用为
@JsonBackReference
。您需要重命名其中一个
@JsonBackReference(value="user-movement")
    public Set<Device> getDevice() {
        return devices;
    }
@JsonBackReference(value="user-movement")
    public Main_schedule getMain_schedule_schedule_id(){
      return main_schedule;
     }
 @JsonBackReference  
   @OneToMany(fetch=FetchType.LAZY,  
     mappedBy = "device_group" 
       cascade=cascadeType.PERSIST)  
       private Set<Device> devices; 


 @JsonManagedReference    
     @ManyToOne(fetch=FetchType.LAZY)  
        @JoinColumn(name="device_group_group_id")  
        private Device_group device_group;