hibernate 多对一 存id就可以了
来源:互联网 发布:ps3模拟器卡顿优化 编辑:程序博客网 时间:2024/04/29 21:15
比如多个客户对应一个用户
public class Company{
private SysUser sysUser;
}
在add.jsp页面
<s:form action="xxx_save">
<s:hidden name="sysUserId"/>
</s:form>
我当时想的是
save(){
SysUser sysUser = session.get(SysUser.class,Integer.parseInt(userid.trim()));
company.setSysUser(sysUser);
session.save(company);
}
而看别人写的代码
注意保存的时候
save(){
sysUser.setId(Integer.parseInt(userid.trim()));
company.setSysUser(sysUser);
session.save(company);
}
直接把userId set了,就可以了,然后看session.save(company);出现的sql是
Hibernate: insert into c_company (sysUserId, dispensePerson, dispenseDate) values (?, ?, ?)
所以只要知道对象的sysUserId就可以插入了
但是要注意这是
<many-to-one name="sysUser" class="cn.itcast.crm.domain.SysUser" lazy="false"> <column name="ownerUser"></column> </many-to-one>
多对一,即有sysUserId外键的时候。
而如果是SysUser类中
<class name="SysUser" table="sys_user"> <set name="companies" inverse="true" lazy="false" cascade="all"> <key column="sysUser_id"/> <one-to-many class="Company"/> </set>
也是只set companyId,然后存入到sysUser的company的集合里在更新,却不能执行insert语句,因为一对多sys_user表没有company的外键
List<Company> companies = new ArrayList<Company>();if (companyIdsIntegers!=null && companyIdsIntegers.length!=0) {for(Integer companyId:companyIdsIntegers){Company company = new Company();company.setId(companyId);companies.add(company);}}Set<Company> companies2 = new HashSet<Company>(companies);if (sysUsers!=null && sysUsers.size()!=0) {for(SysUser sysUser:sysUsers){sysUser.setCompanies(companies2);}sysUserService.updateSysUsers(sysUsers);}
然后List<SysUser> sysUsers = query.list();的时候,
company.getSysUser()的属性是有值的(比如name等等),因为级联查询SysCompany
<class name="cn.itcast.crm.domain.Company" table="c_company">
<many-to-one name="sysUser" class="cn.itcast.crm.domain.SysUser" lazy="false">
<column name="sysUserId"></column>
</many-to-one>
...............其他省略
jdbc底层只看company.sysUser.id,而不看company.sysUser其他的属性来查询sysUser(当然table表c_company里也没其他sysUser的属性作为列存入数据库,只有sysUserId这个外键)
- hibernate 多对一 存id就可以了
- hibernate多对多级联保存
- 验证码的代码(存下,以后就可以直接拿来用了)
- Hibernate多对一
- hibernate多对一
- hibernate多对一
- hibernate多对一...
- hibernate多对一
- hibernate 多对一
- 稳压器不能存电了,电脑一跳闸,电脑就马上关机了?
- 下周就可以回家了
- 怎么就可以Google了?
- Hibernate Gossip: 多对一
- Hibernate多对一实例
- hibernate多对一映射
- hibernate 三 多对一
- hibernate中 多对一
- hibernate 多对一关联
- 2013寒假练习 1088 车厢重组
- DevExpress VCL 动态加载皮肤换肤示例,支持Ribbion
- Oracle动态性能视图 v$sysstat
- Nodejs根据字符串调用对象方法
- 十个随机数排列(vb代码)
- hibernate 多对一 存id就可以了
- POJ 3292 Semi-prime H-numbers
- python 学习笔记
- 教育豪赌让中国农村家庭不堪重负
- Delphi 编译错误信息表
- java设计模式——观察者模式
- poj1113Wall
- cookie无法设置除当前域名或者其父域名之外的其他domain.
- windbg+vmware调试驱动 x86 x64