我有一个非常简单的问题。我不知道我是否不懂某事,或者不知道该怎么做。
我一直想知道冬眠时如何一对一。我可以从两个方向到达桌子。
假设我有Hotel和hotelDetails表。
正在为我创建一个密钥,这样我就可以从酒店到达hotelRating,但是我不能走另一条路。
有时候这对我很重要。
我将使用示例代码。

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:创建在类路径资源[org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]中定义的名称为'entityManagerFactory'的bean时出错:调用init方法失败;嵌套的异常是javax.persistence.PersistenceException:[PersistenceUnit:默认]无法构建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前往Hotel table的最简单方法。
例如,我有HotelRating列表,并且必须从Hotel表中获取每个hotelRanking对象。

最佳答案

HotelRating类中的“ mappedBy”值必须提供


  拥有关系的字段。


在您的示例中,值为“ hotel_rating”

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


但类Hotel中没有此类字段。相应的字段可能是“ hotelRating”。

10-05 23:56