Я хочу смоделировать тот факт, что команде требуется несколько навыков для работы.Многие люди могут иметь определенный навык.У человека много навыков.Человек может быть частью многих команд.
Я использую Hibernate для моделирования этого сценария.Я начал строить с двумя сущностями, командой и навыком, и использовал аннотацию @ManyToMany, чтобы связать эти зависимости.Попытка добавить третье лицо, лицо, вот где это стало трудно.Я не понимаю, как мне построить эту модель, и буду очень признателен за любую помощь.
У меня нет большого опыта использования Hibernate, так что это проблема.
Я искал информациюи большинство примеров, которые я нашел, касались двух связанных сущностей, и я не смог масштабировать эти примеры, чтобы включить в них третью сущность.
Это мои сущности:
package com.example.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import java.util.Set;
@Entity
public class Team {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToMany
private Set<Skill> skills;
@ManyToMany
private Set<Person> persons;
}
package com.example.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import java.util.Set;
@Entity
public class Skill {
@Id
@GeneratedValue
private Long id;
private String knowHow;
@ManyToMany
private Set<Team> teams;
@ManyToMany
private Set<Person> persons;
}
package com.example.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Set;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String name;
private Set<Team> teams;
private Set<Skill> skills;
}
Это моихранилища:
package com.example.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.example.entity.Competence;
import com.example.entity.Team;
import java.util.List;
@Repository
public interface TeamRepository extends CrudRepository<Team, Long> {
List<Competence> findDistinctByKnowHow(String name);
}
package com.example.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.example.entity.Competence;
import com.example.entity.Skill;
import java.util.List;
@Repository
public interface SkillRepository extends CrudRepository<Skill, Long> {
List<Competence> findDistinctByKnowHow(String knowHow);
}
package com.example.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.example.entity.Competence;
import com.example.entity.Person;
import java.util.List;
@Repository
public interface PersonRepository extends CrudRepository<Person, Long> {
List<Competence> findDistinctByPerson(String name);
}