我有兩個類卡和標籤。我想要它們之間的多對多關係,並將cardId和tagId存儲在一張表中。當我從代碼創建數據庫時,它會創建2個不同的表格,並且具有一對多的關係。 tag_cards和card_tags。我在這裏做錯了什麼?我想要一張桌子,有很多關係。ManytoMany創建2個表
import javax.faces.bean.ManagedBean;
import javax.persistence.*;
import java.util.Set;
@ManagedBean(name = "addToCardBean")
@javax.persistence.Table(name = "cards")
@Entity
public class Card implements java.io.Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int id;
@Column(name="username",nullable = false)
private String username;
@Column(name="text",nullable = false)
private String text;
@Column(name="author")
private String author;
@Column(name="title")
private String title;
@Column (name="source")
private String source;
@Column(name="facebookID" ,columnDefinition="BigInt(20) default '0'")
private long facebookID;
@ElementCollection(targetClass = Tag.class)
private Set<Tag> tags;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public long getFacebookID() {
return facebookID;
}
public void setFacebookID(long facebookID) {
this.facebookID = facebookID;
}
@ManyToMany(mappedBy = "cards")
public Set<Tag> getTags() {
return tags;
}
public void setTags(Set<Tag> tags) {
this.tags = tags;
}
}
import javax.faces.bean.ManagedBean;
import javax.persistence.*;
import java.util.Set;
@Entity
@Table(name="tag")
@ManagedBean(name="tagBean")
public class Tag implements java.io.Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;
@Column(name = "tagName", nullable = false)
private String tagName;
@ElementCollection(targetClass = Card.class)
private Set<Card> cards;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTagName() {
return tagName;
}
public void setTagName(String tagName) {
this.tagName = tagName;
}
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "cards_tags",
joinColumns = @JoinColumn(name = "id"),
inverseJoinColumns = @JoinColumn(name = "id")
)
public Set<Card> getCards() {
return cards;
}
public void setCards(Set<Card> cards) {
this.cards = cards;
}
}
不工作我得到由導致錯誤:org.hibernate.MappingException:在映射重複列集合:com.websystique.springmvc.model.Tag。 cards列:id – mert
更改了id的列名,現在就完成了。謝謝! – mert