单向多对一
集合排序:@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<>();