有2个类,question与1p是一对多的关系
在questiondaoImpl中有一个方法
public void addIp(int questionId, Ip ip)
{
Question bean = this.getHibernateTemplate().get(Question.class, id);
Set<Ip> set = bean.getIps();
set.add(ip);
}该方法执行完之后,控制台打印出的sql语句为:
Hibernate: select question0_.id_ as id1_0_0_, question0_.name_ as name2_0_0_, question0_.type_ as type3_0_0_, question0_.repetition_ as repetition4_0_0_, question0_.valid_ as valid5_0_0_, question0_.startdate_ as startdate6_0_0_, question0_.enddate_ as enddate7_0_0_ from vote.question question0_ where question0_.id_=?
Hibernate: select items0_.question_id_ as question4_1_, items0_.id_ as id1_1_, items0_.item_index_ as item5_1_, items0_.id_ as id1_1_0_, items0_.name_ as name2_1_0_, items0_.result_ as result3_1_0_, items0_.question_id_ as question4_1_0_ from vote.item items0_ where items0_.question_id_=?
Hibernate: select ips0_.question_id_ as question3_1_, ips0_.id_ as id1_1_, ips0_.id_ as id1_2_0_, ips0_.address_ as address2_2_0_, ips0_.question_id_ as question3_2_0_ from vote.ip ips0_ where ips0_.question_id_=?
Hibernate: insert into vote.ip (address_, question_id_, id_) values (?, ?, ?)
Hibernate: update vote.ip set question_id_=? where id_=?
也就是先查出一个question对象和Ips集合,然后将ip插入到ip表中
最后更新ip表请问我代码中的set明明就只是一个集合,为什么会自动跟新数据库?
在questiondaoImpl中有一个方法
public void addIp(int questionId, Ip ip)
{
Question bean = this.getHibernateTemplate().get(Question.class, id);
Set<Ip> set = bean.getIps();
set.add(ip);
}该方法执行完之后,控制台打印出的sql语句为:
Hibernate: select question0_.id_ as id1_0_0_, question0_.name_ as name2_0_0_, question0_.type_ as type3_0_0_, question0_.repetition_ as repetition4_0_0_, question0_.valid_ as valid5_0_0_, question0_.startdate_ as startdate6_0_0_, question0_.enddate_ as enddate7_0_0_ from vote.question question0_ where question0_.id_=?
Hibernate: select items0_.question_id_ as question4_1_, items0_.id_ as id1_1_, items0_.item_index_ as item5_1_, items0_.id_ as id1_1_0_, items0_.name_ as name2_1_0_, items0_.result_ as result3_1_0_, items0_.question_id_ as question4_1_0_ from vote.item items0_ where items0_.question_id_=?
Hibernate: select ips0_.question_id_ as question3_1_, ips0_.id_ as id1_1_, ips0_.id_ as id1_2_0_, ips0_.address_ as address2_2_0_, ips0_.question_id_ as question3_2_0_ from vote.ip ips0_ where ips0_.question_id_=?
Hibernate: insert into vote.ip (address_, question_id_, id_) values (?, ?, ?)
Hibernate: update vote.ip set question_id_=? where id_=?
也就是先查出一个question对象和Ips集合,然后将ip插入到ip表中
最后更新ip表请问我代码中的set明明就只是一个集合,为什么会自动跟新数据库?
解决方案 »
- J2EE不能获取字段值
- hibernate 多对一得跑起来很慢,大家如何解决?
- cxf权限拦截
- 问java高手一个关于aix网络共享和安装ftp问题
- 请问学这些东西只可以编网页吗,程序行不?
- Tomcat安装正确但是不能实现页面跳转!
- 能否将hibernate session.createQuery("from MyTable").list()产生的list实例通过RMI方法在客户端使用?
- 组件“struts-config”在此不允许“message-resources”。这个算什么错误,错误在哪里呢??
- 运行java程序(初学)
- 大家说说在linux下和在windows开发java(j2ee)哪个更流行、更好?
- 急急急,SqlServer的问题
- Web Application Server(was)服务器的问题
我们平时用的是API中的SET实现类,而hibetnate用的是自己实现的Set实现类...对我们的不一样,这就是面向接口编程的特点
import java.util.List;
import java.util.Set;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.vote.bean.Ip;
import com.vote.bean.Question;
import com.vote.dao.QuestionDAO;我在该dao里面也没有导入你所说的专门的set实现类啊
{
Question bean = this.getHibernateTemplate().get(Question.class, id); //你这个Id从哪来的?...
Set <Ip> set = bean.getIps();
ip.setQuestion(bean);
set.add(ip);
}
如果楼主设置了Questtion与IP的关系级联保存的话,会根据spring中切入的事务提交后,hibernate的session自动根据修改来更新、同步数据库,非spring的情况下是手动提交事务的时候。
org.hibernate.collection下的PersistentSet类中....
此类对传入的Set实现类中的数据进行了重新操作..........