>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 15033 个阅读者 刷新本主题
 * 贴子主题:  【持久化专题】映射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开发-->使用过滤器
  JSP与Hibernate开发-->域对象在持久化层的四种状态
  Java网络编程-->用Swing组件展示HTML文档
  精通Spring-->Vue Router路由管理器
  Vue3开发-->组合(Composition)API
  【Spring Cloud Alibaba专题】ShardingSphere核心概念
  【Spring Cloud Alibaba专题】OpenFeign开启对请求和响应数据...
  【持久化专题】为什么JPA和Hibernate的持久化方法都抛出运行...
  【Spring专题】Spring MVC是否过时?
  【Spring专题】控制器对象的生命周期
  【Spring专题】Spring框架的数据验证机制
  【Spring专题】@Query和@Modifying注解的增删改操作
  【持久化专题】@Enumerated注解映射枚举类型
  【持久化专题】@Access注解设定Hibernate访问类的属性的方式
  【持久化专题】Hibernate的配置文件
  【持久化专题】对象-关系的映射概念
  【持久化专题】FetchType.LAZY延迟检索策略
  【Java网络编程专题】异步通道和异步运算结果
  【Java基础编程专题】定时器Timer类的用法
  我的计算机书籍创作心得
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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