簡體   English   中英

休眠一對多映射

[英]Hibernate One-to-many mapping

我是休眠的新手,試圖學習一對多的關系,代碼正在執行,沒有任何錯誤,但是它只創建表而沒有在其上插入值。 我想在Employee和他分配的任務之間建立一對多的關系。 一名員工可以完成多項任務。

Employee.java

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    private String name;

    @OneToMany
    private Set<Task> taklist = new HashSet<Task>();
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Set<Task> getTaklist() {
        return taklist;
    }
    public void setTaklist(Set<Task> taklist) {
        this.taklist = taklist;
    }

}

Task.java

@Entity
public class Task {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int taskid;
    private String taskname;
    public int getTaskid() {
        return taskid;
    }
    public void setTaskid(int taskid) {
        this.taskid = taskid;
    }
    public String getTaskname() {
        return taskname;
    }
    public void setTaskname(String taskname) {
        this.taskname = taskname;
    }
}

的hibernate.cfg.xml

<hibernate-configuration>
   <session-factory>
    <property name="hibernate.dialect">
      org.hibernate.dialect.MySQLDialect
    </property>
    <property name="hibernate.connection.driver_class">
        com.mysql.jdbc.Driver
    </property>

    <!-- Assume test is the database name -->
    <property name="hibernate.connection.url">
        jdbc:mysql://localhost/hibernate
    </property>
    <property name="hibernate.connection.username">
        root
    </property>
    <property name="hibernate.connection.password">
        root
    </property>

   <property name="connection.pool_size">10</property>
   <property name="show_sql">true</property>
   <property name="hibernate.hbm2ddl.auto">create</property>


    <mapping class="com.sumeet.onetomany.Employee"></mapping>
    <mapping class="com.sumeet.onetomany.Task"></mapping>

</session-factory>
</hibernate-configuration>

App.java

package com.sumeet.onetomany;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class App {
    public static void main(String args[]){

        SessionFactory factory = new Configuration().configure().buildSessionFactory();

        Session session = factory.openSession();

        Employee emp = new Employee();

        emp.setName("Arun");

        Task task = new Task();

        task.setTaskname("Office Work");

        Task task2 = new Task();

        task2.setTaskname("Home Work");

        emp.getTaklist().add(task);

        session.beginTransaction();

        session.save(emp);

        session.close();

    }

}

您需要提交交易

 Transaction tx = session.beginTransaction();
 session.save(emp);
 tx.commit();  // Need to commit transaction
 session.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM