[Spring JPA]Self Joinセルフコネクタ


Spring JPA Entity SelfJoin
仕事中にSelfJoinの実体コードを正しく理解していなかったので,簡単な学習コードを作成した.
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
public class Category {
    @Id
    private String id;

    private String name;

    private Integer level;
    private Integer sequence;

    @Column(name = "parent_id")
    private String parentId;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "parent_id", referencedColumnName = "id", insertable = false, updatable = false)
    private Category parent;

    @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
    private List<Category> children = new ArrayList<>();

    @Override
    public String toString() {
        return "Category{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", level=" + level +
                ", sequence=" + sequence +
                ", parentId='" + parentId + '\'' +
                '}';
    }
}
@JoinColumn
  • nameプロパティは、マッピングする外部キー名を指定します.
  • referenceColumnNameプロパティに、外部キーが参照するテーブルのプライマリ・キー列名を入力します.
  • 完全なコード
    https://github.com/tituvely/SelfJoin