JPA 一对多单向关联和双向关联(没有外键的情况)

假设我有两个表,一个机构表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 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 bList;

}

class B{

     @ManyToOne @JoinColumn(name = "aId") @JsonBackReference private A a;

}

主表中用@OneTomany中的mappedBy维护双向关系,维护表中用@ManyToOne和@JoinColumn维护关联字段,至于原理机制各位自己去发觉,本人也只是项目中应用。总结下来。

你可能感兴趣的:(项目实践问题处理指南,jpa,一对多,单向关联,双向关联)