Java 多次保存记录
我正在尝试将记录保存到数据库中,保存成功,但当我单击“保存”按钮时,每次记录都保存到表中。我是说一张唱片保存了好几次Java 多次保存记录,java,hibernate,Java,Hibernate,我正在尝试将记录保存到数据库中,保存成功,但当我单击“保存”按钮时,每次记录都保存到表中。我是说一张唱片保存了好几次 public void saveEmployeeDetails(Employee employeeDetails){ try{ System.out.println("----saveEmployeeDetails----"); getSession().saveOrUpdate(employeeDetails);
public void saveEmployeeDetails(Employee employeeDetails){
try{
System.out.println("----saveEmployeeDetails----");
getSession().saveOrUpdate(employeeDetails);
}
catch (Exception e) {
e.printStackTrace();
}
}
我只想节省一次。我的代码有什么问题
java类
public class Employee {
private long id;
private String empid;
private String empname;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getEmpid() {
return empid;
}
public void setEmpid(String empid) {
this.empid = empid;
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
}
hbm文件
<hibernate-mapping>
<class name="org.hibernatejavaapp.Employee" table="EMP_DETAILS">
<id name="id" type="long">
<generator class="native"></generator>
</id>
<property name="empid" column="EMPID" type="string" length="255" not-null="true" />
<property name="empname" column="EMPNAME" type="string" length="255" not-null="true" />
</class>
</hibernate-mapping>
Hibernate使用实体的
id
作为对象等式。在您的情况下,相同的对象被保存,但id不同。如果您想防止数据库中重复输入您的问题。请覆盖equals()
和hashcode()
方法。这里使用的是saveUpdate()
,因此它根据标识符是否存在调用save()
或update()
。e、 g如果标识符存在,将调用update(),否则将调用save()
这是我根据您的问题做出的假设。如果这不是问题所在,请发布您的完整代码。从您的问题来看,您应该将empId作为主键。当您的数据没有任何业务密钥时,应使用代理密钥。 如果这样做,那么对于给定的员工,hibernate将不会为给定的员工插入多个记录
对于给定的员工,您的id每次都在更改,这会导致多次插入。您是否可以共享您的员工类,看起来它的主键在每次保存时都会更改。您的问题不清楚,无法提供答案。请在数据库中使用相同的id阅读显示您的交易代码