【发布时间】:2018-10-31 00:09:58
【问题描述】:
我想模拟一个团队需要多种技能才能发挥作用的事实。 很多人都可以有一定的技能。 一个人有很多技能。 一个人可以加入多个团队。
我使用 Hibernate 来模拟这个场景。 我开始构建两个实体,团队和技能,并使用 @ManyToMany 注释来链接这些依赖项。尝试添加第三个实体 person 是困难的地方。我不明白我应该如何构建这个模型,非常感谢任何帮助。
我没有太多使用 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);
}
【问题讨论】: