我有现有的表hotel和hotel_services。
hotel table contains:
hotel_id
hotel_name
hotel_services contains:
hotel_id
hotel_service_name
Run Code Online (Sandbox Code Playgroud)
每家酒店都可以提供多种服务,因此在我的表单中,用户可以一次输入任意数量的服务。
所以例如:
hotel name: HOTEL1
hotel_services:
1. hotel_service1
2. hotel_service2
3. hotel_service3
Run Code Online (Sandbox Code Playgroud)
我的问题是我应该如何在休眠中以这样的方式执行此操作,以便我能够将所有数据插入到它们各自的表(即hotels 和hotel_services 表)中。
谢谢您的帮助..
您所描述的是and和映射OneToMany之间的基本关系,如下所示(我将使用注释将其映射为双向关联):HotelServices
@Entity
public class Hotel {
@Id @GeneratedValue
private Long id;
@OneToMany(cascade=ALL, mappedBy="hotel")
Set<Service> services = new HashSet<Service>();
// other attributes, getters, setters
// method to manage the bidirectional association
public void addToServices(Service service) {
this.services.add(service);
service.setHotel(this);
}
@Entity
public class Service {
@Id @GeneratedValue
private Long id;
@ManyToOne
private Hotel hotel;
// getters, setters, equals, hashCode
}
Run Code Online (Sandbox Code Playgroud)
这是一个演示如何使用它的片段:
SessionFactory sf = HibernateUtil.getSessionFactory(); // this is a custom utility class
Session session = sf.openSession();
session.beginTransaction();
Hotel hotel = new Hotel();
Service s1 = new Service();
Service s2 = new Service();
hotel.addToServices(s1);
hotel.addToServices(s2);
session.persist(hotel);
session.getTransaction().commit();
session.close();
Run Code Online (Sandbox Code Playgroud)
要更进一步(因为我不会在此答案中解释所有内容),请查看:
| 归档时间: |
|
| 查看次数: |
17754 次 |
| 最近记录: |