使用hibernate将值插入多个表中

时间:2010-10-13 08:10:25

标签: hibernate

我现有表酒店 hotel_services

hotel table contains:
hotel_id
hotel_name

hotel_services contains:
hotel_id
hotel_service_name

每家酒店都可以提供多种服务,因此在我的表格中,用户可以一次输入他想要的服务。

所以例如:

hotel name: HOTEL1
hotel_services:
1. hotel_service1
2. hotel_service2
3. hotel_service3

我的问题是我应该如何在hibernate中执行此操作,以便能够将所有数据插入到各自的表中(即hotels和hotel_services表)。

感谢您的帮助..

1 个答案:

答案 0 :(得分:4)

您所描述的是OneToManyHotel之间的基本Services关系,并且映射看起来像这样(我会将其映射为双向关联,使用注释):

@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
}

这是一个演示如何使用它的片段:

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();

为了更进一步(因为我不会在这个答案中解释所有内容),请看一下: