>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 15031 个阅读者 刷新本主题
 * 贴子主题:  【持久化专题】映射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面向对象编程-->Swing组件(上)
  JavaWeb开发-->自定义JSP标签(Ⅰ)
  JSP与Hibernate开发-->通过JPA API检索数据
  Java网络编程-->RMI框架
  精通Spring-->Vue组件开发基础
  Vue3开发-->绑定表单
  【Spring Cloud Alibaba专题】ShardingSphere核心概念
  【Spring Cloud Alibaba专题】GateWay与Nacos整合
  【Spring Cloud Alibaba专题】@SentinelResource注解的用法
  【Spring Cloud Alibaba专题】Dubbo框架中提供者回调消费者
  【Java基础编程专题】使用和创建JavaDoc文档
  向小伙伴们推荐我所创作前后端编程书籍的学习顺序
  【持久化专题】用orphanRemoval属性映射父子关系
  【持久化专题】从JPA API中获得Hibernate API
  【Java编程基础专题】用Scanner类读取用户在控制台输入的数据
  【Java网络编程专题】用java.net.URL类访问HTTP服务器读取网...
  【Java网络编程专题】盘点用Java抓取HTTP服务器和FTP服务器的...
  【JavaWeb专题】Tomcat与IIS集成详解
  【JavaWeb专题】选择32位或64位JDK或者Apache HTTP服务器的安...
  【Java基础编程专题】Java集合与数组的互换
  【Java基础编程专题】用static修饰符进行静态导入的作用和语...
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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