Java 如何让getMapping显示spring引导的数据

Java 如何让getMapping显示spring引导的数据,java,spring,spring-boot,vue.js,vuetify.js,Java,Spring,Spring Boot,Vue.js,Vuetify.js,我有一个vue应用程序,我正在向后端发出axios.get请求。我只想将从后端发送的数据写入控制台,但它不起作用。没有返回值。我试图通过postman发出请求,响应为200,但没有显示json对象。没有显示任何错误,我也找不到任何错误 Vue axios: getMeetingTimes(){ axios.get("http://localhost:8081/api/meetingTime/") .then(function(response){

我有一个vue应用程序,我正在向后端发出axios.get请求。我只想将从后端发送的数据写入控制台,但它不起作用。没有返回值。我试图通过postman发出请求,响应为200,但没有显示json对象。没有显示任何错误,我也找不到任何错误

Vue axios:

getMeetingTimes(){
      axios.get("http://localhost:8081/api/meetingTime/")
      .then(function(response){
        console.log(response.headers)
      })
}
Spring实体:

会议地点:

@Entity
@Table(name = "meeting_times")
@Getter
@Setter
public class MeetingTime implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "meeting_date")
    private String date;

    @Column(name = "start_time")
    private String startTime;

    @Column(name = "meeting_name")
    private String meeting_name;

    @Column(name = "end_time")
    private String endTime;

    @ManyToOne
    @JoinColumn(name = "meeting_name" ,insertable = false, updatable = false, referencedColumnName = "meeting_name")
    private MeetingsSetting meetingName;
}
服务:

@Service
public class MeetingTimeService {

    @Autowired
    MeetingTimeRepository meetingTimeRepository;

    public List<MeetingTime> findAllMeetingTimes(){
    System.out.println("HALLOOO "+meetingTimeRepository.findAll());
        return meetingTimeRepository.findAll();
    }
}
更新

控制器:

@CrossOrigin(origins = "http://localhost:8080")
@RestController
@RequestMapping("api/meetingTime")
public class MeetingTimeController {

    @Autowired
    MeetingTimeService meetingTimeService;

    @GetMapping(value = "/" )
    public void getAllTimes(){
        meetingTimeService.findAllMeetingTimes();
    }



}
会议设置和会议时间的保存方法:

    @PostMapping("/")
    public void saveMeeting(@RequestBody MeetingsSetting meetingsSetting){
        meetingsSetting.getMeetingTime()
                .forEach(mt -> mt.setMeeting_name(meetingsSetting.getMeetingName()));
        // ...
        meetingSettingService.saveMeeting(meetingsSetting);

    }


}
这是内部会议设置控制器

这就是结果:

{
        "id": 35,
        "date": "2021-06-21",
        "startTime": "11:01",
        "meeting_name": "Testeriuds",
        "endTime": "11:01",
        "meetingName": {
            "id": 17,
            "meetingName": "Testeriuds",
            "meetingUrl": null,
            "meetingPw": "",
            "meetingTime": [
                {
                    "id": 37,
                    "date": "2021-05-31",
                    "startTime": "15:30",
                    "meeting_name": "Testeriuds",
                    "endTime": "16:30",
当我从axios发出请求时,会出现此错误。但仍在控制台上显示数据:

java.lang.StackOverflowError: null
    at java.base/java.io.IOException.<init>(IOException.java:81) ~[na:na]
    at com.fasterxml.jackson.core.JacksonException.<init>(JacksonException.java:26) ~[jackson-core-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.core.JsonProcessingException.<init>(JsonProcessingException.java:25) ~[jackson-core-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.core.JsonProcessingException.<init>(JsonProcessingException.java:38) ~[jackson-core-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.databind.JsonMappingException.<init>(JsonMappingException.java:245) ~[jackson-databind-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:785) ~[jackson-databind-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.12.3.jar:2.12.3]
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.3.jar:2.12.3]
java.lang.StackOverflower错误:null
在java.base/java.io.IOException.(IOException.java:81)~[na:na]
在com.fasterxml.jackson.core.JacksonException.(JacksonException.java:26)~[jackson-core-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.core.JsonProcessingException.(JsonProcessingException.java:25)~[jackson-core-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.core.JsonProcessingException.(JsonProcessingException.java:38)~[jackson-core-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.JsonMappingException.(JsonMappingException.java:245)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:785)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)~[jackson-databind-2.12.3.jar:2.12.3]

让您的
@CrossOrigin
与axios请求的主机匹配。还要使控制器端点返回一些内容,而不仅仅是调用方法:

@CrossOrigin(origins = "http://localhost:8081") // <-- because axios did 8081
@RestController
@RequestMapping("api/meetingTime")
public class MeetingTimeController {

    @Autowired
    MeetingTimeService meetingTimeService;

    @GetMapping(value = "/" )
    public List<MeetingTime> getAllTimes(){             // removed void return type
        return meetingTimeService.findAllMeetingTimes(); // <-- added return here
    }

}

@交叉原点(原点=”http://localhost:8081“”/因此,我遇到的最后一个错误称为无限递归,并且可能发生在双向实体关系中。我发现的一个修复方法是将@JsonManagedReference放在实体中,在我的例子中,该实体有多个注释

会议环境是这样的:

@JsonManagedReference
    @OneToMany(mappedBy = "meetingName", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Set<MeetingTime> meetingTime = new HashSet<>();
@JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "meeting_name" ,insertable = false, updatable = false, referencedColumnName = "meeting_name")
    private MeetingsSetting meetingName;

也许有更好的解决方案,如果有人告诉我我的解决方案是正确的还是错误的选择,我将不胜感激。

您必须制定CORS政策。您可以在navigator控制台中查看错误。在这里您可以看到如何设置它:我在控制器中启用了跨原点,我将更新我的问题。但是导航器控制台是什么意思呢?刚刚更新了我的问题如果你在导航器中按F12(如果是Chrome)并按console,你将能够看到一些在服务器中看不到的错误。嗨,谢谢,这一切都成功了。但出于某种原因,实体会议设置的一个问题是发送。那是因为他们两人都有一种单一的关系吗?我用save方法更新了这两个类的代码,似乎序列化导致了递归问题,只是在上面的类中添加了
@EqualsAndHashCode(exclude=“meetingName”)
,并添加了
@EqualsAndHashCode(exclude=“MeetingTime”)
在上面的课程中
会议设置
打破递归。嗨,好奇哪种解决方案更像你的或我的最佳实践?
@JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "meeting_name" ,insertable = false, updatable = false, referencedColumnName = "meeting_name")
    private MeetingsSetting meetingName;