Весенние отношения один на один - PullRequest
0 голосов
/ 27 сентября 2019

У меня очень простой вопрос.Я не знаю, не понял ли я что-то или не знаю, как это сделать.Я долго удивлялся, как один в один в спящем весне.Я могу добраться до стола в двух направлениях.Допустим, у меня есть таблицы Hotel и hotelDetails.Для меня создается ключ, чтобы я мог добраться до отеля от отеля, но я не могу пойти другим путем.Иногда это важно для меня.Я буду использовать пример кода.

public class Hotel {

    private Long id;
    private String name;
    private String currency;
    private String image;
    private HotelRating hotelRating;


    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
.
    .
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "hotel_rating_id", referencedColumnName = "id")
    public HotelRating getHotelRating() {
        return hotelRating;
    }

    public void setHotelRating(HotelRating hotelRating) {
        this.hotelRating = hotelRating;
    }

Таблица рейтинга отелей.

Проблема заключается в том, когда я пытаюсь разрешить использовать геттер и сеттер в отеле.Я получаю:

org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем entityManagerFactory, определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]: сбой вызова метода init;вложенное исключение - javax.persistence.PersistenceException: [PersistenceUnit: default] Невозможно построить Hibernate SessionFactory;вложенное исключение: org.hibernate.MappingException: не удалось определить тип для: com.flightradar.flightradar.model.hotel.Hotel, в таблице: hotel_rating, для столбцов: [org.hibernate.mapping.Column (hotel)]

@Entity
@Table(name = "hotel_rating")
public class HotelRating {

    private long id;

    private Integer votesNumber;

    @Min(1)
    @Max(5)
    private Double average;

    @OneToOne(mappedBy = "hotel_rating")
    Hotel hotel;



    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public Integer getVotesNumber() {
        return votesNumber;
    }

    public void setVotesNumber(Integer votesNumber) {
        this.votesNumber = votesNumber;
    }

    public Double getAverage() {
        return average;
    }

    public void setAverage(Double average) {
        this.average = average;
    }

}

Итак, ребята, помогите мне понять простейшую возможность добраться до гостиничного стола из HotelRating Table.Например, у меня есть список HotelRating, и я должен получить из таблицы Hotel для каждого объекта hotelRanking.

1 Ответ

1 голос
/ 27 сентября 2019

Значение "mappedBy" в классе HotelRating должно содержать

Поле, которому принадлежит отношение.

В вашем примере это значение "hotel_rating"

 @OneToOne(mappedBy = "hotel_rating")
 Hotel hotel;

но в классе Hotel такого поля нет.Соответствующее поле может быть «hotelRating».

...