Bag集合中的对象不按特定方式排序,但是允许有重复对象。在Java集合API中并没有提供Bag接口,Hibernate允许在持久化类中用List来模拟Bag的行为。假定Customer对象的images集合中允许存放重复的照片文件名,可以把images属性定义为List类型:

private List<String> images=new ArrayList<String>();

在数据库中定义了一张IMAGES表,它的CUSTOMER_ID字段为参照CUSTOMERS表的外键,由于Customer对象允许有重复的照片文件名,因此应该在IMAGES表中定义一个代理主键ID。

以下是IMAGES表的DDL定义:

create table IMAGES(   ID bigint not null,   CUSTOMER_ID bigint not null,   FILENAME varchar(15) not null,   primary key (ID),   foreign key (CUSTOMER_ID) references CUSTOMERS(ID));

在Customer类中,映射Customer类的images属性的代码如下:

@ElementCollection@CollectionTable(name="IMAGES",         joinColumns=@JoinColumn(name="CUSTOMER_ID"))@Column(name="FILENAME")@CollectionId(columns=@Column(name="ID"),                type=@Type(type="long"),                generator="increment")  private List<String> images=new ArrayList<String>();

@CollectionId注解来自于org.hibernate.annotations包,指定IMAGES表的主键为ID,它的映射类型为“long”,它采用“increment”标识符生成策略。

©著作权归作者所有:来自51CTO博客作者孙卫琴的原创作品,如需转载,请注明出处,否则将追究法律责任

好知识,才能预见未来

赞赏

0人进行了赞赏支持

更多相关文章

  1. 4.14 vSphere许可术语和定义
  2. 帮你光速脱单!程序员找对象指南
  3. 如何在定义局部变量时赋初始值
  4. 学 Win32 汇编[31] - 结构与联合
  5. Delphi XE2 之 FireMonkey 入门(34) - 控件基础: TFmxObject: 克
  6. Delphi 中的自动释放策略
  7. 路由知识、基于锚点的哈希模式路由、使用vue路由模块路由、用历
  8. Laravel 添加自定义函数
  9. JavaScript遍历对象方法总结

随机推荐

  1. 基于HTML5的iPad电子杂志横竖屏自适应方
  2. Delphi下发送Email的方法
  3. jQuery验证没有错误计数
  4. (转)让所有浏览器支持HTML5 video视频标签
  5. 不会出现Javascript context.closePath()
  6. 宽度切换jQuery中的Animate在FireFox中不
  7. JQuery从动态内容加载动态内容
  8. HTML5移动开发基础
  9. Jquery实现table行数的增加,删除,实现指定
  10. 使用phonegap包装html5网页为iOS app