我想模拟一个团队需要多种技能才能运作的事实。许多人可以具有一定的技能。一个人有很多技能。一个人可以成为许多团队的一部分。
我使用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);
}
解决此问题的一种方法是创建一个仅作为桥接实体存在的实体。这样,您可以在“真实”实体和桥实体之间添加三个不同的一对多关系。这样一来,您应该能够处理三对多关系。
但是,您可能必须“手动”处理桥实体中的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句