Код, который вы дали выше, будет работать, если вы отобразите это как двунаправленное отношение:
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL, orphanRemoval=true, mappedBy="user")
private Collection<UserAuthority> authorities;
, а затем в UserAuthority:
@ManyToOne
@JoinColumn(name="username")
private User user;
MappedBy сообщает Hibernate, что UserAuthority является владельцем-владельцем, то есть имеет внешний ключ, который определяет связь. Поэтому, когда вы хотите сохранить новую сущность UserAssociation, вы должны убедиться, что вы установили пользователя, к которому относится.
Это также приведет к более оптимизированному процессу сохранения, поскольку Hibernate может вставлять записи UserAuthority с правильным внешним ключом, а не вставлять, а затем обновлять, чтобы установить его.