In a Many to Many relation between two table with a Mapping table in between, how can I only load ids for the second entity.
Following is the example to explain what
I encountered a problem with the accepted answer, when I wanted to map both pages
and pageIds
. Hibernate will use both of these fields to make changes to the mapping table when a User
is saved, possibly causing a lot of weird behaviour.
I instead solved this by making pageIds
@Transient
and populating the collection using @PostLoad
:
@ManyToMany
@JoinTable(
name="user_page",
joinColumns = @JoinColumn(name="id_user"),
inverseJoinColumns = @JoinColumn(name="id_page")
)
public Set pages;
@Transient
public Set pageIds;
@PostLoad
private void postLoad() {
pageIds = pages.stream().map(Page::getId).collect(Collectors.toSet());
}