2010-10-13 20 views
2

我有現有的表酒店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 

我的問題是我應該怎麼做休眠以這樣的方式,我就可以插入所有的數據到各自表(這是酒店和hotel_services表)。

感謝您的幫助..

+1

,這是非常基本的ORM映射,讀了一些教程 – Salandur 2010-10-13 08:31:23

回答

3

什麼你所描述的是一個HotelServices和映射之間的基本關係OneToMany看起來像這樣(我將它映射爲雙向關聯,使用註釋) :

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

要進入˚F urther(因爲我不會解釋這個答案的一切),看看: