>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 15032 个阅读者 刷新本主题
 * 贴子主题:  【持久化专题】映射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面向对象编程-->Java语言的基本语法和规范
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->Java网络编程入门
  精通Spring-->通过Vuex进行状态管理
  Vue3开发-->Vue简介
  【Vue.js技术专题】Vue组件的数据监听
  【Vue.js技术专题】组件的递归
  【Spring Cloud Alibaba专题】Dubbo框架中提供者回调消费者
  【持久化专题】为什么JPA和Hibernate的持久化方法都抛出运行...
  【Spring专题】控制器对象的生命周期
  【Spring专题】@Query注解设定查询语句
  【Spring专题】Spring框架的数据验证机制
  【Vue专题】Vue组件的CSS过渡模式
  【持久化专题】JPA API的级联操作
  【持久化专题】Hibernate的配置文件
  【Java网络编程专题】用Apache FTPClient在FTP服务器上创建目...
  【Java网络编程专题】用Java套接字编写基本的客户/服务器程序
  【持久化专题】通过JPQL查询语句进行批量处理数据
  【JavaWeb专题】Tomcat与IIS集成详解
  【Java基础编程专题】Java集合与数组的互换
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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