java 集合映射

本文探讨了Java集合映射在一对多关系中的应用,适合处理少量且单一的数据。介绍了@ElementCollection用于映射嵌入式数据类型,并详细讲解了如何设置联合主键,包括实现序列化接口、重写hashcode和equals方法,以及在嵌入式类上使用@Embeddable注解。
摘要由CSDN通过智能技术生成
集合映射应用场景

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;

    /**
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值