Я работаю с Spring boot 2.1.3.RELEASE на mysql8 SGBD.
Я генерирую свои таблицы автоматически из аннотированной модели, которую я написал.Но я думаю (это означает, что я не уверен), я могу объединить две таблицы в этом случае, но я не знаю как?
Вот модель:
@Entity(name = "met")
@Access(AccessType.PROPERTY)
public class Met {
enum Categorie { CATEGORIE_1, CATEGORIE_2 }
private long id;
private Set<Prof> profs;
private Met() {}
@Id
@GeneratedValue
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@OneToMany
@JoinColumn(name = "met_id")
public Set<Prof> getProfs() {
return profs;
}
public void setProfs(Set<Prof> profs) {
this.profs = profs;
}
@Entity(name = "comp")
@Access(AccessType.PROPERTY)
public static class Comp {
private long id;
private Comp() {}
@Id
@GeneratedValue
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
@Entity(name = "prof")
@Access(AccessType.PROPERTY)
public static class Prof {
private ProfPK profPk;
private List<Comp> comps;
private Prof() {}
@EmbeddedId
public ProfPK getProfPk() {
return profPk;
}
public void setProfPk(ProfPK profPk) {
this.profPk = profPk;
}
@ManyToMany
public List<Comp> getComps() {
return comps;
}
public void setComps(List<Comp> comps) {
comps = comps;
}
@Embeddable
public static class ProfPK implements Serializable {
private Met met;
private Categorie categorie;
private ProfPK() {}
@ManyToOne
public Met getMet() {
return met;
}
public void setMet(Met met) {
this.met = met;
}
@Enumerated(EnumType.STRING)
public Categorie getCategorie() {
return categorie;
}
public void setCategorie(Categorie categorie) {
this.categorie = categorie;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ProfPK)) return false;
ProfPK profPK = (ProfPK) o;
return met.equals(profPK.met) && categorie == profPK.categorie;
}
@Override
public int hashCode() {
return 31 * met.hashCode() + categorie.hashCode();
}
}
}
}
И вот таблицы, которые я получаю:
+-----------------+ +------------------+
| met | | comp |
|-----------------| |------------------|
| id bigint(20)| | id bigint(20) |
+-----------------+ +------------------+
| |
| |
| |
+--------------------------+ |
| prof | |
|--------------------------| \
| categorie varchar(255)| |
| met_id bigint(20) | |
+--------------------------+ |
\- |
\- |
\- +-------------------------------+
\- | prof_comps |
\- |-------------------------------|
\| prof_categorie varchar(255)|
| prof_met_id bigint(20) |
| comp_id bigint(20) |
+-------------------------------+
Я думаю, что возможно объединить таблицы prof
и prof_comps
.Но я не знаю, как это сделать.Я ищу решение по аннотации.Я думаю, что я уже сделал такие вещи, используя @JoinColumn
или @JoinTable
, но все мои попытки ничего не меняют.
Спасибо за вашу помощь