public void updatePersonData(int person_id,PersonData personData){
session=new HibernateUtil().OpenSession();
transaction=session.beginTransaction();
personData.setPerson_id(person_id);
try {
//System.out.println(personData.getPerson_id());
session.update(personData);
transaction.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
transaction.rollback();
}finally{
if(session.isOpen())
session.close();
}
}测试代码:
@Test
public void test_updatePersonData(){
PersonData pd=new PersonData();
pd.setPerson_sex("男");
pd.setPerson_age(27);
personDatabean.updatePersonData(3, pd);
}如果这样写,update操作是update全部字段,而我的意思是只update我在测试代码中写出的字段,其他字段内容保持不变。该怎么实现呢???
session=new HibernateUtil().OpenSession();
transaction=session.beginTransaction();
personData.setPerson_id(person_id);
try {
//System.out.println(personData.getPerson_id());
session.update(personData);
transaction.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
transaction.rollback();
}finally{
if(session.isOpen())
session.close();
}
}测试代码:
@Test
public void test_updatePersonData(){
PersonData pd=new PersonData();
pd.setPerson_sex("男");
pd.setPerson_age(27);
personDatabean.updatePersonData(3, pd);
}如果这样写,update操作是update全部字段,而我的意思是只update我在测试代码中写出的字段,其他字段内容保持不变。该怎么实现呢???
public PersonData selectPersonData(int person_id){
session=new HibernateUtil().OpenSession();
transaction=session.beginTransaction();
PersonData personData=null;
try {
ResultSet rs=session.connection().createStatement().executeQuery("select * from taobaomall.person_data where person_id="+person_id);
personData=(PersonData) rs;
ResultSetMetaData rsmd=rs.getMetaData();
while(rs.next()){
for(int i=1;i<=rsmd.getColumnCount();i++){
System.out.print(rs.getString(i)+" ");
}
System.out.println();
}
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(session.isOpen())
session.close();
}
return personData;
}修改测试代码:
@Test
public void test_updatePersonData(){
PersonData pd= personDatabean.selectPersonData(3);
pd.setPerson_sex("男");
pd.setPerson_age(27);
personDatabean.updatePersonData(3, pd);
}但是这样还是报错,请教大家该怎么实现呢???
你可以直接调用HibernateDaoSupport的merge方法
用法如下:
定义dao类继承HibernateDaoSupport
方法调用super.getHibernateTemplate().merge(object);
Entity entity=new Entity();
entity.setID(1);//设置修改的是哪个对象
entity.setPerson_sex("男");//后面就是想修改那个字段就设置哪字段的值
执行merge方法
例如测试代码:
@Test
public void test_updatePersonData(){
PersonData pd=personDatabean.selectPersonData(3);//获得对象
pd.setPK("1");//设置该对象的主键值
pd.setPerson_sex("男");
pd.setPerson_age(27);
//调用修改方法你再试试