Поле, рассчитанное вручную в спящем режиме POJO - PullRequest
1 голос
/ 02 февраля 2012

Я использую Spring в сочетании с Hibernate в моем проекте.

Предположим, у меня есть таблица USER, которая связана с ROLE через кросс-таблицу и ROLE таблицу по очередиснова связан с таблицей PERMISSION через перекрестную таблицу.Таким образом, у каждого пользователя может быть несколько ролей, и каждая роль может иметь несколько разрешений, которые могут быть разделены между различными ролями.В orm у меня будет класс User, подобный этому:

class User {
    // blah blah properties

    @ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinTable(name="USER_ROLE",
        joinColumns={@JoinColumn(name = "USER_ID", nullable = false, updatable = false)},
        inverseJoinColumns={@JoinColumn(name = "ROLE_ID", nullable = false, updatable = false)})
    private Set<Roles> roles;
}

Теперь мне нужно иметь другое свойство в bean-компоненте User, содержащем список разрешений пользователя в виде Strings (List<String> permissions).Самый простой способ сделать это для меня был бы, если бы можно было вызвать какой-либо метод объекта User сразу после заполнения его свойств.Метод выполнит for над ролями, а затем еще один над разрешениями и добавит их в список разрешений в объекте пользователя.

Или, возможно, hibernate / spring предоставит что-то для этого конкретного случая?1015 *

PS Я пытался найти это в Google, но безуспешно.

1 Ответ

2 голосов
/ 02 февраля 2012

Я думаю, @ обратный вызов PostLoad поможет вам в этом.Он позволяет вам выполнять вычисления или модификации сразу после загрузки объекта, чтобы вы могли затем создать список разрешений.

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