Существует несколько подходов, с которыми вы можете справиться
Подход 1
Определите @ManyToMany
между вашей командой и ресурсами, как это:
В объекте команды
@ManyToMany(fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = "resources",
joinColumns = { @JoinColumn(name = "id") },
inverseJoinColumns = { @JoinColumn(name = "id") })
private Set<Resources> resources= new HashSet<>();
В объекте ваших ресурсов:
@ManyToMany(fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
},
mappedBy = "resources")
private Set<Team> teams= new HashSet<>();
Подход 2
@Entity
@Table(name = "team_resources")
public class TeamResources implements Serializable {
@EmbeddedId
private TeamResourcesId id;
@ManyToOne
@JoinColumn(name = "team_id", referencedColumnName = "id", insertable = false, updatable = false)
private Team team;
@ManyToOne
@JoinColumn(name = "resources_id", referencedColumnName = "id", insertable = false, updatable = false)
private Resources resources;
public TeamResources (Team u, Resources r) {
// create primary key
this.id = new TeamResourcesId (u.getUserId(), q.getQuestionId());
// initialize attributes
this.user = u;
this.question = q;
}
@Embeddable
public static class TeamResourcesId implements Serializable {
@Column(name = "team_id")
protected Long teamId;
@Column(name = "resources_id")
protected Long resourcesId;
public TeamResourcesId () {
}
public TeamResourcesId (Long teamId, Long resourcesId) {
this.teamId= teamId;
this.resourcesId= resourcesId;
}
//Getter , setter. equal and hash
}
поэтому, чтобы ответить на ваш вопрос, следуйте второму подходу, и это хорошо, чтобы не определять двунаправленный подход, так как он может привести к некоторой проблеме во время выполнения, если не обрабатывается должным образом.