我是Hibernate的新手,正在尝试学习它的细微差别。我正在尝试使用hibernate保存或更新实体。我的pojo课:-
@Entity
@Table(name = "TestDB")
public class TestCaseData {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private intid;
@Column(columnDefinition="TEXT")
private String location;
private String name;
/*Getters and setters*/
主类:-
public TestDbDao{
public static void main(String args[]){
TestCaseData d1 = new TestCaseData();
TestCaseData d2 = new TestCaseData();
TestCaseData d3 = new TestCaseData();
d1.setHash("New York");
d1.setName("Panache");
saveOrUpdate(d1);
/** d2 and d3 **/
}
}
我是saveOrUpdate
这个实体。第一次运行主类时,在表中创建了3行。当我第二次运行相同的程序时,据我所知,当存在saveOrUpdate时,如果表中不存在该值则应保存该表,或者如果表中已有的值被更新则应进行更新。但是我发现相同的3行添加到具有不同ID的表中。id 1,2,3,4,5,6是相同的。为什么saveOrUpdate不能与generateValue id一起使用?谁能解释一下?
可以预期,因为您正在运行该程序两次。
每次程序运行时,Hibernate只会看到您传入3个新实体(没有ID),因此您要告诉Hibernate在DB中创建新记录。
要查看saveAndUpdate()的效果,您可以第二次将分离的实例传递给Hibernate,例如TestCaseData
,ID为ID的实例与DB中的现有记录相对应,但ID为name
。您应该能够看到Hibernate更新数据库中的相应记录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句