java - 与 Collection<Integer> 的一对多

标签 java hibernate spring-boot spring-data-jpa one-to-many

我在数据库中有一个表“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/

相关文章:

java - Hibernate Envers - 包括更改发生的日期

java - Android 中的警报框不起作用

java - Android:java.lang.NoSuchMethodError:没有静态方法 zzy。

java - 如何中断 Hibernate session ?

spring - Postgres v. HSQL ConstrainViolationException Wrapping in Spring

java - 如何使用 RestTemplate 解析没有键的 json 值?

java - 在 Spring Boot 应用程序中使用 @Valid 和 BindingResult 时出现表单输入验证问题

database - 没有数据库的 JHipster 应用程序

Java Graphics2D 浮点精度 drawOval 替代方案?

java - 用于日期的 Eclipse JFace FieldEditor?