簡體   English   中英

如何使用休眠將數據插入數據庫而不刪除其先前的數據?

[英]How can I insert data into a database using hibernate without erasing its previous data?

我正在嘗試使用hibernate更新數據庫。為此,我使用了以下代碼,當我在輸入第一組值之后嘗試輸入一些值時,該數據庫將覆蓋數據庫。如何插入一組值而不擦除以前的值??

這是我使用的代碼。

String firstName = txtfnm.getText();
                String lastName = txtlnm.getText();
                String empId = txtuid.getText();


                //Configuration config = new Configuration();
                Configuration config = new Configuration();
                config.addAnnotatedClass(Employee.class);
                config.configure("hibernate.cfg.xml");

                //to create a new table
                new SchemaExport(config).create(true, true);


                ServiceRegistry servicereg = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();

                //create a session factory
                SessionFactory factory = config.buildSessionFactory(servicereg);
                Session session = factory.getCurrentSession();

                //SessionFactory session = factory.getCurrentSession();

                session.beginTransaction();


                Employee emp1 = new Employee();

                emp1.setFname(firstName);
                emp1.setLname(lastName);
                emp1.setUsrid(Integer.valueOf(empId));



                session.update(emp1);

                session.getTransaction().commit();

這是實體類

@Entity
@Table(name="empdtls")
public class Employee {

    @Column(name="emp_id")
    private int usrid;

    @Column(name="emp_fnm")
    private String fname;

    @Column(name="emp_lnm")
    private String lname;

    @Id
    public int getUsrid() {
        return usrid;
    }

    public void setUsrid(int usrid) {
        this.usrid = usrid;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public String getLname() {
        return lname;
    }

    public void setLname(String lname) {
        this.lname = lname;
    }





}

休眠考慮主鍵的ID,所以在您的情況下

@Id
@Column(name="emp_id")
private int usrid;

如果您要保存數據庫中已經存在userId(相同值,例如4)的員工對象,則userId是主鍵。

如果要保存新的新數據,還有一件事,為什么要使用update()方法。 使用save()Persist()或者如果您不知道數據庫中已經存在具有相同userId的對象,請使用saveOrUpdate()

同意Mitul,但我想您也應該關閉會議。

為了更新實體,我們必須從數據庫加載實體並使用會話進行更新...

在這種情況下,您需要創建新實體,即更新所有字段...

請在session.beginTransaction()之后更改代碼作為休假...。

下面的代碼將從數據庫中獲取實體,並帶有“ 4”號...其主鍵

員工emp1 =(員工)session.get(Employee.class,4);

    emp1.setFname(firstName);

    emp1.setLname(lastName);

    emp1.setUsrid(Integer.valueOf(empId));

    session.update(emp1)

您需要將hibernate.hbm2ddl.auto屬性設置為hibernate配置文件中的update

暫無
暫無

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

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