@Entity
@Table(name = "base_object")
public class BaseObject implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "name", nullable = false, unique = true)
private String name;
@ManyToMany
@JoinTable(
name = "related_objects",
joinColumns = @JoinColumn(name = "base_name", referencedColumnName = "name"),
inverseJoinColumns = @JoinColumn(name = "related_name", referencedColumnName = "name")
)
private Set<RelatedObject> related = new HashSet<>();
}
@Entity
@Table(name = "related_object")
public class RelatedObject {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "name", nullable = false, unique = true)
private String name;
}