Как смоделировать трехсторонние отношения в микросервисе JPA Spring Boot с серверной частью MySQL - PullRequest
0 голосов
/ 07 июня 2019

Я создал микро сервис Spring Boot JPA с серверной частью MySQL.У меня есть две простые сущности в моей модели: пользователи и навыки.Они используются для представления базы навыков в моей организации.У каждого пользователя может быть много навыков, поэтому я использовал соединение один ко многим, чтобы смоделировать это, и могу успешно назначать навыки пользователям.В моей базе данных я вижу, что JPA создала таблицу users_skills для достижения этой цели.

Однако я сейчас изо всех сил, потому что для каждого навыка, который имеет пользователь, необходимо указать уровень опыта (например, базовый, продвинутый, эксперт), и я не уверен, как этого добиться.Я не уверен, должны ли «уровни» быть просто типом enum в сущности Skill, или, возможно, это должна быть отдельная сущность сама по себе?Могу ли я настроить JPA так, чтобы он генерировал таблицу users_skills_levels, которая представляла бы эти трехсторонние отношения?Любой совет будет приветствоваться!

Это мои классы сущностей: -

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    private String name;

    private String email;

    @OneToMany(
            cascade = CascadeType.ALL,
            orphanRemoval = true
    )
    private Set<Skill> skills = new HashSet<>();

    getters and setters
}
@Entity
@Table(name = "skills")
public class Skill {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Integer id;

    private String name;

    getters and setters
}

1 Ответ

1 голос
/ 07 июня 2019

Невозможно достичь того, чего вы пытаетесь достичь.

Вы должны создать Entity для users_skills_levels.Например, UserSkillLevel После этого у этой сущности будет отношение ManyToOne к Пользователю и отношение ManyToOne к Skills плюс уровень атрибута.

У пользователя также есть коллекция UserSkillLevel и сущности Skill.

Пожалуйста,более подробный пример можно найти здесь:

https://thoughts -on-java.org / много-связей-дополнительных-свойств /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...