假设我有两个表,一个机构表A,一个机构详情表B,表A为主表一的一方,表B为维护表为多的一方,在表B中没有外键,但会有表A主键字段的冗余记录,
1jpa一对多单向关联的设置
class A{
/** * A表id */ @Id @GeneratedValue @Column(name = "a_id") private Long aId;
/** * B集合 */ @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY) @JoinColumn(name = "a_id",nullable = false,insertable = false,updatable = false) private List<B> bList;
}
class B{
@Column(name = "a_id")
private Long aId;
}
主表添加多的一方的集合,使用@OneToMany和@JoinColumn注解,其中@JoinColumn中name为B表中冗余的A主键字段名称,B表不做任何配置,也没有外键。
1jpa一对多双向关联的设置
class A{
/** * B集合 */ @JsonManagedReference @OneToMany(mappedBy = "a") private List<B> bList;
}
class B{
@ManyToOne @JoinColumn(name = "aId") @JsonBackReference private A a;
}
主表中用@OneTomany中的mappedBy维护双向关系,维护表中用@ManyToOne和@JoinColumn维护关联字段,至于原理机制各位自己去发觉,本人也只是项目中应用。总结下来。