簡體   English   中英

休眠未找到具有多個到同一實體的許多映射的默認值

[英]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_idUser_id列。 (替代Foo_idUser_id與相應的主鍵。另外替代Foo_UserTable1_Table2其中Table1是表FooTable2User

您可以使用@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM