Как получить данные из двух таблиц MySQL, используя Hibernate - PullRequest
0 голосов
/ 30 декабря 2018

В моей базе данных у меня есть две таблицы airport и calendar, соединенные клавишей foreight airport_id.Я хочу получить ответ json с данными из двух таблиц для определенного airport_id=273

enter image description here

Например, я хочу получить данные для аэропорта с airport_id и Календарь с передней клавишей airport_id равен 273. На самом деле, я получил пустой ответ от localhost: 8080.Я не получил никакой ошибки, просто пустая страница, как на картинке ниже.Что я делаю не так?Заранее спасибо!

enter image description here

Airport.java

@Entity
@Table(name = "airport")
public class Airport {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer airport_id;

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

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

    @OneToMany(mappedBy = "airport")
    @JsonManagedReference("airport")
    private List<Calendar> calendars; ....

Calendar.java

@Entity
@Table(name = "calendar")
public class Calendar {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer calendar_id;

@Column(name = "departureTime")
private Time departureTime;

@Column(name = "destinationTime")
private Time destinationTime;

@ManyToOne(targetEntity = Airport.class)
@JoinColumn(name = "airport_id")
@JsonBackReference("airport")
private Airport airport; ....

CalendarController.java

public class CalendarController {

@Autowired
CalendarService calendarService;

@Autowired
AirportService airportService;

@GetMapping(value = "/search/{airport_id}")
public List<Calendar> getCalendars(@PathVariable("airport_id") Integer airport_id) {
    Airport airport = airportService.findOne(airport_id);
    return calendarService.findOne(airport);
}}

CalendarRepository.java

 public interface CalendarRepository extends CrudRepository<Calendar, Integer> {

 Calendar getOne(int calendar_id);
 List<Calendar> findByAirport(Airport airport_id);
 }

CalendarService.java

public interface CalendarService {

List<Calendar> findOne(Airport airport_id);
}

CalendarServiceImpl.java

@Service
public class CalendarServiceImpl implements CalendarService {

@Autowired
CalendarRepository repository;

@Autowired
AirportRepository airportRepository;

@Override
public List<Calendar> getCalendars(Integer airport_id) {
    Airport airport = airportRepository.getOne(airport_id);
    return repository.findByAirport(airport);
}}

Обновление

AirpostService.java

public interface AirportService {

Airport findOne(int airport_id);
}

AirportRepository.java

public interface AirportRepository extends CrudRepository<Airport, Integer> {

Airport getOne(Integer airport_id);
}

1 Ответ

0 голосов
/ 30 декабря 2018

Проблема не в вашем Hibernate, а в вашем контроллере.Вам просто нужно добавить аннотацию @Responsebody к вашему методу.Аннотация @ResponseBody сообщает контроллеру, что возвращаемый объект автоматически сериализуется в JSON.

@GetMapping(value = "/search/{airport_id}")
@ResponseBody
public List<Calendar> getCalendars(@PathVariable("airport_id") Integer airport_id) {
    Airport airport = airportService.findOne(airport_id);
    return calendarService.findOne(airport);
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...