Хранить список в столбцах таблицы - PullRequest
0 голосов
/ 03 июня 2018

У меня таблица производительности и часов.Один спектакль можно играть много раз в определенные часы.Отношения один ко многим.

@Entity
@Table(name = "performance_type")
@Data
public class PerformanceType {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, unique = true)
    private Integer performanceTypeId;
    @Column(length=127)
    private String performOptions;
}

и

@Entity
@Table(name = "performance")
@Data
public class Performance {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, unique = true)
    private Integer performanceId;

    @OneToMany(mappedBy = "performance")
    private List<Hours> performanceHours = new ArrayList<>();
}

В спящем режиме базы данных создайте часы таблицы, у которых PerformanceId - только одно значение.Как я могу вставить список значений, чтобы производительность с идентификатором 1,4,7 воспроизводилась одновременно.Что мне нужно дополнительная таблица hours_performance, в которой хранятся hourId и perfomanceId?

1 Ответ

0 голосов
/ 03 июня 2018

Поскольку отношения, которых вы хотите достичь, (согласно моему пониманию) многие-ко-многим, вам действительно нужны часы для отображения третьей таблицы отношений. Вот очень хороший пример. Вам потребуется настроить третью таблицу с двумя внешними ключами для двух таблиц, которые вы хотите соединить.

@Entity
@Table(name = "performance")
@Data
public class Performance {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, unique = true)
    private Integer performanceId;

    @ManyToMany
    @JoinTable(
        name = "hours_performance", 
        joinColumns = { @JoinColumn(name = "performance_id") }, 
        inverseJoinColumns = { @JoinColumn(name = "hour_id") }
    )
    private List<Hours> performanceHours = new ArrayList<>();
}

@Entity
@Table(name = "hours")
@Data
public class Hours {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, unique = true)
    private Integer hourId;
    ZonedDateTime time;

    @ManyToMany(mappedBy = "performanceHours")
    private List<Performance> performances;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...