集合映射应用场景
1.用于一对多的场景
2.用于少量比较单一的数据
一、集合类型来分
1.List@ElementCollection(targetEntity=String.Class)
@CollectionTable(name="t_name")//生成数据库的名字
@Orderby//必须加
@OrderColumn(name="orderindex") //排列字段
private List<String> names
List有序
@ElementCollection(targetEntit=String.Class)
@CollectionTable(name="t_names")
private Set<String> names;
Set无序不可重复
@ElementCollection(targehtEntity=String.Class)
@CollectionTable(name="t_names")
@MapKeyProperty(name="key")
private Map<String,String> names;
Map
二、.数据类型来分
基本数据类型
@ElementCollection(targetEntity=基本数据类型)
嵌入式数据类型 要求: 1.实现序列化接口 2.重写hashCode和equals方法 3.加@Embeddable
@ElementCollection(targetEntity=嵌入式数据类型)
联合主键(嵌入式类)
1.实现序列化接口
2.重写hashcode 和 equals方法
3.载类上加@Embeddable
一对多单向
package com.oracle.bean;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.List;
import java.util.Set;
/**
* 产品的分类
*/
//营养套餐 水果礼盒 箱装水果 国产水果 进口水果 干货食品
@Entity
@Data
@Table(name="TCatalog")
public class Catalog {
@Id
@GeneratedValue(generator= "uuid")
@GenericGenerator(name="uuid",strategy = "uuid")
private String cataid;
private String cataname;
/**
* 在关系映射中一对多的情况和我们 平常在使用集合映射是一样
* List set Map来描述这种关系
* list @orderby
* map @mapKeyProperty
* @oneToMany 用于一方
* @joinColumn 通知多方去建立一个外键关联字段catalogid 来关联我的主键
* 在表中给你添加一个字段 存放就是顺序 1 2 3
*/
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="catalogid")
@OrderBy("orderindex desc")
private List<Product> products;
}
package com.oracle.bean;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.math.BigDecimal;
@Entity
@Data
@Table(name="TProduct")
public class Product {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name="uuid",strategy = "uuid")
private String pid;
/**