假设Team和Student是1对多的关系,而student中只有team_id和name两个属性,我们可以不建立Student实体类,采用element的方式,由于bag可以允许重复,所以,在我们根据team删除其下某一个student的时候,hibernate不知道具体要删除哪一条数据,所以,只有讲team下所有student全部删除,然后再重新插入不应该删除的数据,这样会对效率有很大影响,针对这种情况,可以采用idbag标签,在student中加一个字段cid来唯一标识每一个student
数据库结构:


Pojo:































Team.hbm.xml
























Hibernate.cfg.xml



































测试代码:





















































运行结果:
Hibernate: select team0_.id as id0_, team0_.teamname as teamname0_ from teamIDBag team0_ where team0_.teamname='team1'
Hibernate: select students0_.team_id as team1_0_, students0_.name as name0_, students0_.cid as cid0_ from studentIDBag students0_ where students0_.team_id=?
Hibernate: delete from studentIDBag where cid=?
可以红色部分,删除student时是根据cid删的,如果不使用idbag,则会出类似delete from studentIDBag where team_id=?的操作,然后会接着跟一个insert操作,来恢复本不应该删除的数据