JPA实体之间的关系配置

单向多对一

集合排序:@OrderBy(“price DESC”) ASC升序/DESC降序
一方

    	@Entity
 		@Table(name = "commoditytype")
 		public class CommodityType {
 		    @Id
 		    @GeneratedValue
 		    private Long id;
 		    @Column(name = "com_name")
 		    private String commodityType;
		}

多方

		@Entity
		@Table(name = "commodity")
		public class Commodity {
		   @Id
		   @GeneratedValue主键生成策略//@GeneratedValue(strategy = GenerationType.AUTO)默认是auto(自动)主键生成策略
		   private Long id;
		   @Column(name = "com_name")
		   private String commodityName;
		   @ManyToOne(fetch = FetchType.LAZY)
		   @JoinColumn(name = "com_id")//关联实体外键
		   private CommodityType commodityId;
		}

单向一对多

一方

		@Entity
		@Table(name="t_product")
		public class Product {   
		    @Id    
		    @GeneratedValue   
		    private Long id;   
		    private String name;
		}

多方

		@Entity
		@Table(name="t_productDir")
		public class ProductDir {
		    @Id
		    @GeneratedValue
		    private Long id;
		    private  String name;
		    @OneToMany//申明是一对多
		    @JoinColumn(name="dir_id")
		    private Set<Product> products = new HashSet<>();// //泛型必须添加进去,不然会报错
		 }
	 注意:这里使用HashSet或ArrayList时都要用接口Set/List接收

双向多对一或一对多

	ex:@OneToMany(mappedBy = "dir")//放弃管理配置
	注意事项:尽量让多方来维护的关系,一方放弃管理

级联操作

级联:就是我操作一方数据,就同时可以多方的数据也一并操作

	1.级联保存
	@OneToMany(cascade = CascadeType.PRESIST)
	
	2.级联删除
	@OneToMany(cascade = CascadeType.REMOVE)
	
	3.孤儿删除
	@OneToMany(mappedBy = "dir")

	4.强级联
	@OneToMany(cascade = CascadeType.ALL)

单向多对多

User

	@Entity
	@Table(name="t_user")
	public class User {
	    @Id
	    @GeneratedValue
	    private Long id;
	    private String name;
	    @ManyToMany
	    @JoinTable(name="t_user_role",joinColumns={@JoinColumn(name="user_id")},
	            inverseJoinColumns ={@JoinColumn(name="role_id")} )
	    private Set<Role> roles = new HashSet<>();
	}

Role

	@Entity
	@Table(name="t_role")
	public class Role {   
	    @Id
	    @GeneratedValue    
	    private Long id;    
	    private String name;
	}

双向多对多

Role

@ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
    @JoinTable(name="t_user_role",joinColumns={@JoinColumn(name="role_id")},
            inverseJoinColumns ={@JoinColumn(name="user_id")} )
    private Set<User> users = new HashSet<>();

User

 @ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
    @JoinTable(name="t_user_role",joinColumns={@JoinColumn(name="user_id")},
            inverseJoinColumns ={@JoinColumn(name="role_id")} )
    private Set<Role> roles = new HashSet<>();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值