>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20803 个阅读者 刷新本主题
 * 贴子主题:  【持久化专题】映射Bag包(值类型的集合) 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2021-05-05 06:14:06     消息  查看  搜索  好友  邮件  复制  引用

本文参考《精通JPA与Hibernate:Java对象持久化技术详解》,作者:孙卫琴,清华大学出版社出版
  
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。

     点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

     以下是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”标识符生成策略。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小





程序猿的技术大观园:www.javathinker.net





[这个贴子最后由 admin 在 2021-10-09 10:47:28 重新编辑]
  Java面向对象编程-->多线程(上)
  JavaWeb开发-->Web运作原理(Ⅱ)
  JSP与Hibernate开发-->域对象在持久化层的四种状态
  Java网络编程-->Java反射机制
  精通Spring-->
  Vue3开发-->计算属性和数据监听
  'Huge Brother': Just How Texans Jerry Hughes is ...
  Payments Get rid of Indispensable $20 Million Newbie in ...
  【Vue.js技术专题】分割setup()函数
  【Vue.js技术专题】自定义指令范例:v-drag指令
  【Spring Cloud Alibaba专题】Nacos集群的Raft算法
  【Spring专题】Spring框架的数据验证机制
  【持久化专题】映射一对多双向关联关系
  【持久化专题】从JPA API中获得Hibernate API
  【持久化专题】EntityManager和Session的merge()方法详解
  【Java网络编程专题】用Apache HttpClients下载网上的图片等...
  【JavaWeb专题】在Servlet中利用Apache开源类库实现文件上传
  【JavaWeb专题】Tomcat与IIS集成详解
  IT技术书写作技巧分享:慎用概念和术语
  【JavaWeb专题】选择32位或64位JDK或者Apache HTTP服务器的安...
  【Java基础编程专题】Java集合的批量操作
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。