Hibernate 在分离实体的情况下何时使用合并与更新
现在我的问题是,如果我在更新会话中使用.update(e),它也可以工作,它也会更新数据库中的值,那么我如何知道在分离实体的情况下何时使用merge和何时使用update当两个分离的对象代表同一实体时,应该使用merge。Hibernate将自动确定上次更新的字段,并将两个对象合并在一起,以便最新的信息出现在新对象中,然后添加到数据库中 当您只想用分离的实体更新数据库对象时,应该使用Update 例:Hibernate 在分离实体的情况下何时使用合并与更新,hibernate,merge,Hibernate,Merge,现在我的问题是,如果我在更新会话中使用.update(e),它也可以工作,它也会更新数据库中的值,那么我如何知道在分离实体的情况下何时使用merge和何时使用update当两个分离的对象代表同一实体时,应该使用merge。Hibernate将自动确定上次更新的字段,并将两个对象合并在一起,以便最新的信息出现在新对象中,然后添加到数据库中 当您只想用分离的实体更新数据库对象时,应该使用Update 例: Foo1和Foo2都是Foo对象,具有Bar1和Bar2字段
Foo1
和Foo2
都是Foo
对象,具有Bar1
和Bar2
字段<在Foo2
的Bar1
值之后更新了Foo1
的Bar1
值。调用merge时,Foo1
的Bar1
值将用于更新Foo
的数据库实例
public class unconnected {
public static void main(String[] args) {
//System.out.println("enter the id you want toc carry change on");
//Scanner s=new Scanner(System.in);
//int id=s.nextInt();
dao x=new dao();
emp e= x.findbyid(id);
e.setId(10);
e.setName("dsfsdassafasdsa");
e.setJob("546");
e.setSalary(789);
x.update(e);
}
public class dao {
public emp findbyid(int id)
{
Session session=myfactory.getSession();
emp e=(emp)session.get(emp.class, id);
session.close();
return e;
}
public void update(emp e)
{
Session session=myfactory.getSession();
Transaction t=session.beginTransaction();
session.merge(e);
t.commit();
session.close();
}
}