【问题标题】:inserting values into multiple tables using hibernate使用休眠将值插入多个表
【发布时间】:2014-10-27 14:37:00
【问题描述】:

我有现有的表 hotelhotel_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 表)。

感谢您的帮助..

【问题讨论】:

  • 这是非常基本的 ORM 映射,阅读一些教程

标签: hibernate


【解决方案1】:

您所描述的是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
}

这里有一个 sn-p 演示如何使用它:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多