![](/img/trans.png)
[英]How can I insert data into a database by using hibernate and springMVC
[英]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.