我在数据库中有一个表“seance”(“id”是 PK):
CREATE TABLE seance(
id int NOT NULL AUTO_INCREMENT,
seance_id int,
number int,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
session
id, seance_id, number
1, 111222, 1951
2, 111222, 1951
3, 111222, 1951
4, 333222, 1415
5, 333222, 1415
6, 333222, 1415
实体类:
@Entity
@Table(name = "seance")
public class Seance {
public Seance() {}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "seance_id")
private Integer seanceId;
@Column(name = "number")
@ElementCollection// it is wrong cause require TWO tables
//what I should write here or modify?
private Set<Integer> number = new HashSet<Integer>();
public Seance(Integer seanceId, Set<Integer> number) {
this.seanceId = seanceId;
this.number = number;
}
// getters and setters
}
因此,我想要一个 Seance 类的实例:
Integer seanceId: 111222;
Set number: 1951, 1951, 1951;
最佳答案
您需要有这样的实体:
@Entity
@Table(name = "seance")
public class Seance {
public Seance() {
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "seance_id")
private Integer seanceId;
@ElementCollection
@CollectionTable(
name="NUMBER",
joinColumns=@JoinColumn(name="OWNER_ID")
)
private Set<Integer> number = new HashSet<Integer>();
public Sessions(Integer seanceId, Set<Integer> number) {
this.seanceId = seanceId;
this.number = number;
}
public Integer getSeanceId() {
return seanceId;
}
public void setSeanceId(Integer seanceId) {
this.seanceId = seanceId;
}
public Set<Integer> getNumber() {
return number;`enter code here`
}
public void setNumber(Set<Integer> number) {
this.number = number;
}
}
这样做,你将有两个表,并且 number 将有一个表,而不是 be 和实体。此外,您的概念非常糟糕,因为在处理数据库时需要避免冗余。 您也可以点击此链接 https://en.wikibooks.org/wiki/Java_Persistence/ElementCollection
关于java - 与 Collection<Integer> 的一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800720/