Как мне представить это с помощью JPA? - PullRequest
2 голосов
/ 02 февраля 2010

Мне нужен объект «RolesPlayed» со следующими столбцами

  • пользователь
  • роль
  • отдел / проект / группа

Все три вышеприведенных столбца составляют составной первичный ключ.Я хотел бы знать, возможно ли определение столбца как одного из отделов / проектов / групп?Если да, то как?Или мне нужно разбить сущность на DepartmentRoles, GroupRoles и ProjectRoles.

Спасибо.

1 Ответ

0 голосов
/ 03 февраля 2010

Для этого можно использовать полиморфизм с абстрактным базовым классом.

@Entity
public class RolePlayed {

    @ManyToOne
    private User user;

    @ManyToOne
    private Role role;

    @ManyToOne
    private Body body;

    ...

}

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Body {
    ...
}

@Entity
public class Department extends Body {
    ...
}

@Entity
public class Project extends Body {
    ...
}

@Entity
public class Group extends Body {
    ...
}

Ознакомьтесь с разделом Полиморфизм в учебном руководстве по Java Enterprise для хорошего обзора.

В качестве альтернативы вы также можете сделать сущность RolePlayed абстрактной, с реализациями DepartmentRole, GroupRole и ProjectRole.

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