[英]Hibernate no default value found having multiple manytomany mappings to the same entities
用戶有這些:
@ManyToMany(mappedBy = "votedDownBy")
private Set<Foo> votedDown =new HashSet<Foo>();
@ManyToMany(mappedBy = "favouritedBy")
private Set<Foo> favourites = new HashSet<Foo>();
相應的Foo具有:
@ManyToMany
private Set<User> votedDownBy = new HashSet<User>();
@ManyToMany
private Set<User> favouritedBy = new HashSet<User>();
部署時,我沒有為polledDownBy_id提供默認值...,我也不知道為什么?
@ManyToMany
映射是使用@ManyToMany
表完成的。 在您的情況下,必須有一個具有這些映射的Foo_User
表。 即Foo_id
和User_id
列。 (替代Foo_id
和User_id
與相應的主鍵。另外替代Foo_User
與Table1_Table2
其中Table1
是表Foo
和Table2
為User
)
您可以使用@JoinTable
批注覆蓋這些默認值:
@ManyToMany(mappedBy = "votedDownBy")
@JoinTable(name="User_Foo_Votedown",
joinColumns={@JoinColumn(name="User_ID")},
inverseJoinColumns={@JoinColumn(name="Foo_id")})
private Set<Foo> votedDown =new HashSet<Foo>();
@ManyToMany(mappedBy = "favouritedBy")
@JoinTable(name="User_Foo_Fav",
joinColumns={@JoinColumn(name="User_ID")},
inverseJoinColumns={@JoinColumn(name="Foo_id")})
private Set<Foo> favourites = new HashSet<Foo>();
和
@ManyToMany(mappedBy = "votedDown")
private Set<User> votedDownBy = new HashSet<User>();
@ManyToMany(mappedBy = "favorites")
private Set<User> favouritedBy = new HashSet<User>();
由於這是對稱的雙向關系,因此您也可以在User
放入“ mappedBy
注釋,在“ Foo
”中JoinTable
。
只需將連接表添加到固定的每個映射中,foo類現在看起來像這樣:
@ManyToMany
@JoinTable(name="user_foo_vote_down")
private Set<User> votedDownBy = new HashSet<User>();
@ManyToMany
@JoinTable(name="user_foo_favourite")
private Set<User> favouritedBy = new HashSet<User>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.