Как применить ограничения таблиц к базе данных, используя аннотации javax.prersistence (JPA)? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть 4 вещи для подключения и хранения, но я не уверен, как использовать аннотацию для наложения ограничений.Итак, вот сценарий:

У меня есть проект, менеджер, участник и роль.Это четыре объекта или три, так как менеджер также является участником.Роль имеет разные роли, такие как менеджер, участник, pointOfContact, руководитель проекта и т. Д. Я не уверен, нужна ли мне роль или нет, но да, есть несколько ролей.

Теперь вот ограничения:

1) Проект может поддерживать только ОДНОГО человека с ролью владельца.

2) Только существующий владелец или PowerUser,Администратор может менять владельцев проекта.

3) Передача права собственности от пользователя X пользователю Y автоматически добавляет пользователя X в качестве участника.

4) Любое количество участников может быть добавлено в проект..

5) С человеком может быть связана одна или несколько ролей.

Я не уверен, как спроектировать его с помощью JPA.Я пробовал это:

@Entity
@Table(name = "PROJECT")
public final class PROJECT {
/**
 * The Serialization id.
 */
private static final long serialVersionUID = 1L;

@ManyToOne(cascade = CascadeType.PERSIST)
@JoinTable(name = "OWNER_PROJECT_REL",
        joinColumns = @JoinColumn(name = "PROJECT_ID"),
        inverseJoinColumns = @JoinColumn(name = "OWNER_ID")
)
private SomeDTO owner;

    @ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name = "PARTICIPANT_PROJECT_REL",
        joinColumns = @JoinColumn(name = "PROJECT_ID"),
        inverseJoinColumns = @JoinColumn(name = "PARTICIPANT_ID")
)
private List<Participant> participants = new ArrayList<>();

Но здесь я делаю владельца и участника двух разных классов Java.Я не уверен, что это хороший дизайн.

Должен ли я делать только класс участника и рассматривать владельца как участника?

Где поместится Ролевый стол?

Сколько таблиц я должен использовать, учитывая, что пространство не является проблемой?

Как написать эту вещь в JPA, так как я довольно новичок в этом?

Спасибо!

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