[英]Hibernate: multiple @ManyToMany relations in a single table
我有一個項目,其中Hibernate用於管理實體。 兩個表之間可以存在多個@ManyToMany關系。 所以基本上我有這樣的代碼:
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_screenplay_authors",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false))
private Set<Staff> screenplayAuthors = Sets.newHashSet();
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_story_authors",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false))
private Set<Staff> storyAuthors = Sets.newHashSet();
現在,我想將這些關系存儲在單個表中,並附加一些描述關系類型的列。 所以基本上,我想有這樣的東西(使用偽代碼):
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_staff",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false),
joinCriteria = @JoinCriteria(columnName = "staff_type", value = StaffType.SCREENPLAY_AUTHOR, enumType = EnumType.STRING))
private Set<Staff> screenplayAuthors = Sets.newHashSet();
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "movies_staff",
joinColumns = @JoinColumn(name = "movie_id", nullable = false, updatable = false),
inverseJoinColumns = @JoinColumn(name = "staff_id", nullable = false, updatable = false),
joinCriteria = @JoinCriteria(columnName = "staff_type", value = StaffType.STORY_AUTHOR, enumType = EnumType.STRING))
private Set<Staff> storyAuthors = Sets.newHashSet();
這在Hibernate或Java世界的任何地方都是可能的嗎?
您可以在每個@JoinTable注釋之后添加如下內容:
@Fetch(FetchMode.SUBSELECT)
這一切。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.