无法在JPA Springboot中找到具有逻辑名称的列

发布于 2025-01-31 21:06:57 字数 1856 浏览 2 评论 0原文

有两个桌子。酒店内的地址。我已经提到了Onetomany的关系。但是编译器投掷错误。

错误创建bean用“ entitymanagerfactory”中定义的name' 路径资源 [org/springframework/boot/autoconfigure/orm/jpa/hibernatejpaconfiguration.class]: init方法的调用失败;嵌套异常是 org.hibernate.mappingException:无法找到具有逻辑的列 名称:org.hibernate.mapping.table(地址)及其 相关的超级物品和辅助表

饭店。java

@AllArgsConstructor
@Data
@Entity
@Table(name = "hotels")
@NoArgsConstructor
public class HotelEntity {

    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "hote_id")
    private String hotelId;
    @Column(name = "hotel_name")
    private String hotelName;
    @Column(name = "build_date")
    private Date buildDate;
    @Column(name = "guest_type") @Enumerated(EnumType.STRING)
    private GuestType guestType;
    @Column(name = "room")
    @OneToMany(targetEntity = RoomEntity.class,cascade = CascadeType.ALL)
    @JoinColumn(name = "hotel_room", referencedColumnName = "roomId")
    private List<Room> room;
    @OneToOne(targetEntity = AddressEntity.class,cascade = CascadeType.ALL)
    @JoinColumn(name = "hotel_address", referencedColumnName = "addressId")
    private Address hotelAddress;

地址。java

@Entity
@Table(name = "ADDRESS")
@Getter
@Setter
@ToString
@RequiredArgsConstructor
public class AddressEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "address_id")
    private String addressId;
    @Column(name = "street_name")
    private String streetName;
    @Column(name = "city")
    private String city;
    @Column(name = "zip_code")
    private String zipCode;
    @Column(name = "country")
    private String country;
}

我尝试了一些更改的变量名称,如果我缺少某些东西,也要仔细检查。但是看起来我遵循的方式与其他堆栈溢出问题中提到的方式相同。我想念什么吗?

There are two tables. Address inside Hotel. I have already mentioned OneToMany relation. But compiler throwing error.

Error creating bean with name 'entityManagerFactory' defined in class
path resource
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
Invocation of init method failed; nested exception is
org.hibernate.MappingException: Unable to find column with logical
name: addressId in org.hibernate.mapping.Table(address) and its
related supertables and secondary tables

Hotel.java

@AllArgsConstructor
@Data
@Entity
@Table(name = "hotels")
@NoArgsConstructor
public class HotelEntity {

    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "hote_id")
    private String hotelId;
    @Column(name = "hotel_name")
    private String hotelName;
    @Column(name = "build_date")
    private Date buildDate;
    @Column(name = "guest_type") @Enumerated(EnumType.STRING)
    private GuestType guestType;
    @Column(name = "room")
    @OneToMany(targetEntity = RoomEntity.class,cascade = CascadeType.ALL)
    @JoinColumn(name = "hotel_room", referencedColumnName = "roomId")
    private List<Room> room;
    @OneToOne(targetEntity = AddressEntity.class,cascade = CascadeType.ALL)
    @JoinColumn(name = "hotel_address", referencedColumnName = "addressId")
    private Address hotelAddress;

Address.java

@Entity
@Table(name = "ADDRESS")
@Getter
@Setter
@ToString
@RequiredArgsConstructor
public class AddressEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "address_id")
    private String addressId;
    @Column(name = "street_name")
    private String streetName;
    @Column(name = "city")
    private String city;
    @Column(name = "zip_code")
    private String zipCode;
    @Column(name = "country")
    private String country;
}

I tried some changing in variable name also double checked if I am missing something. but looks I have followed same way as mentioned in other Stack Overflow questions. Am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

z祗昰~ 2025-02-07 21:06:57

引用的columnname应参考@column名称,而不是Java属性名称
Change readecce> readeccecolumnNameselidse> selidseid值 to address_id

 @JoinColumn(name = "hotel_address", referencedColumnName = "address_id")
        private Address hotelAddress;

referencedColumnName shall refer to the @Column name and not java attribute name
Change referencedColumnName value from addressId to address_id

 @JoinColumn(name = "hotel_address", referencedColumnName = "address_id")
        private Address hotelAddress;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文