По моему опыту, вы делаете это именно так, как это обычно делается. Мой вопрос был бы больше о структуре (я ожидаю, что происходит намного больше, чем в приведенном выше примере), почему вы хотите манипулировать Учетной записью непосредственно из Группы.
Я также спрашиваю, является ли это ситуацией OneToMany или ManyToMany (обычно несколько учетных записей могут принадлежать к одной группе, а несколько групп могут принадлежать к одной учетной записи, но все это в семантике вашей конкретной схемы учета ...) в любом случае: вы делаете все правильно, и хотя я спрашиваю (в этом конкретном случае), почему вы хотите напрямую манипулировать учетной записью (если она не загружена Lazily), это совершенно нормально.
[Возможно, вам придется добавить некоторые правила каскадирования, чтобы они сохранялись должным образом в зависимости от вашей конфигурации.]
Следует отметить, что, сопоставив учетную запись, вы фактически добавили ее в список учетных записей. Когда база данных в следующий раз запросит создание этого списка, она заполнит список, найдя ссылки из сущности Account.
Короче->
public void Group.setAccounts(Account a)
{
this.account = a;
}
фактически эквивалентно тому, что вы делаете выше. База данных запросит и заполнит список чем-то похожим на:
//Pseudo SQL
SELECT g.id FROM Group g WHERE g.account_id = :account_id
Таким образом, кроме ленивой загрузки (что-то, что вы можете или не можете хотеть) добавление в группы не требуется, поскольку список определяется запросом.
(Не усложняйте, это выглядит просто. Надеюсь, длинное объяснение даст вам представление о том, что происходит в JPA)