Java JPA获取数据时的多对一持久性问题
我有两张桌子,分别是Java JPA获取数据时的多对一持久性问题,java,jpa,many-to-one,Java,Jpa,Many To One,我有两张桌子,分别是酒店和酒店房间类型。而且有从hotal_room_type到hotel的多对一映射。表示酒店的主键是酒店房间类型中的外键 现在我正在使用下面的代码获取hotal\u room\u type数据 Query query = entityManager.createQuery("from " + HotelsRoomType.class.getName() + " where event.id = " + eventId); Lis
酒店
和酒店房间类型
。而且有从hotal_room_type
到hotel
的多对一映射。表示酒店
的主键是酒店房间类型
中的外键
现在我正在使用下面的代码获取hotal\u room\u type
数据
Query query = entityManager.createQuery("from "
+ HotelsRoomType.class.getName() + " where event.id = "
+ eventId);
List<HotelsRoomType> list = query.getResultList();
Query Query=entityManager.createQuery(“来自”
+HotelRoomType.class.getName()+“其中event.id=”
+eventId);
List=query.getResultList();
当我得到两个记录的酒店房间类型有相同的酒店,然后我得到的酒店只有第一个酒店房间类型。对于其他HotelRoomType,它提供了Hotel对象,但在hotelId
变量中有0,这意味着我无法再次接收Hotel对象
我需要获得所有酒店房间类型的完整酒店实体。如何做到这一点?我终于找到了答案。我需要在
Hotel
实体的映射中添加cascade=CascadeType.ALL
。比如:
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "hot_room_frn_hot_id", nullable = false)
public Hotel getHotel() {
return this.hotel;
}
我终于找到了答案。我需要在
Hotel
实体的映射中添加cascade=CascadeType.ALL
。比如:
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "hot_room_frn_hot_id", nullable = false)
public Hotel getHotel() {
return this.hotel;
}
什么是event.id?请发布您的映射类……。事件是HotelRoomType表中的另一个映射实体。主要问题是在获取酒店实体时。使用联接获取哪列或属性上的所有数据联接?我在酒店属性中使用了@JoinColumn注释event.id是什么?请发布您的映射类……。事件是HotelRoomType表中的另一个映射实体。主要问题是在获取酒店实体时。使用联接获取哪列或属性上的所有数据联接?我在酒店物业中使用了@JoinColumn注释