Hibernate one-to-many映射要注意的问题及详细例子
使用场合:
table1中主键id被table2作为外键引用,一条table1的记录可能有多条table2记录对应。
在页面上执行删除一条table1的操作, table1的id值传到java程序,删除table1的id=${id}之前必须删除table2关联的记录,因为有外键约束关系,所以必须先删除table2的相关记录,否则报错;而删除table2的记录不需要自己写代码删除, 因为有声明了hibernate one-to-many映射,直接删除table1的记录就行了。
不过要注意的是, 删除table1的记录前, 要先通过id获取table1的记录对象,否则无法删除成功。
举例==>
逻辑: 一个邮件接收用户可以关联多个产品, 如果删除了邮件接收用户, 那么产品关联邮件接收用户表的记录也要删除。
1) 数据库表:
/** EmailUserService.java */public class EmailUserDAO extends BaseDAO { /** * 通过id获得邮件接收人信息对象 * @param id * @return */public EmailUser getEmailUserById( String id) { return (EmailUser)this.load(EmailUser.class, id); } /** * 删除一个邮件接收人信息对象 * @param emailUser EmailUser对象 */ public void deleteEmailUser(EmailUser emailUser) { this.delete(emailUser); }}