Состаной PK в Hibernate

191
09 апреля 2018, 01:42

Есть таблица Teacher:

CREATE TABLE IF NOT EXISTS `dbo`.`department` (
  `id` INT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `short_name` VARCHAR(255) NULL,
  PRIMARY KEY (`id`),
  .................

есть таблица Teacher:

  CREATE TABLE IF NOT EXISTS `dbo`.`teacher` (
  `id` INT NOT NULL,
  `first_name` VARCHAR(255) NOT NULL,
  `middle_name` VARCHAR(255) NOT NULL,
  `last_name` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC),
  ......................

так же таблица Rate для связи между преподователем и кафедрой.

CREATE TABLE IF NOT EXISTS `dbo`.`rate` (
  `teacher_id` INT NOT NULL,
  `department_id` INT NOT NULL,
  `rate` DOUBLE NOT NULL,
  PRIMARY KEY (`teacher_id`, `department_id`),
  .........................

Но в ней есть еще поле rate. Как мне правильно создать сущность для Таблицы Rate, что-бы там был составной Primary Key.

Нашел такое решение у индусов. Но это не совсем, то

 @Entity
    @Table(name = "rate")
    public class Rate {
        @ManyToOne
        @JoinColumn(name = "teacher_id", nullable = false)
        private Teacher teacher;
        @ManyToOne
        @JoinColumn(name = "department_id", nullable = false)
        private Department department;
        @Id
        private Long id = teacher.getId() + department.getId();
        private Double rate;
    }

Помогите составить правильную сущность. Может она вообще не должна быть сущностью? Но, как мне тогда получать поле rate?

Answer 1
@Embeddable
public class RateId {
    @Column(name = "teacher_id")
    public Long teacherId;
    @Column(name = "department_id")
    public Long departmentId;
}
@Entity
public class Rate {
    @EmbeddedId
    private RateId id;
    private Double rate;
}
READ ALSO
Морфология в полнотекстовом поиске MySQL

Морфология в полнотекстовом поиске MySQL

Часто встречаю упоминания, что полнотекстовый поиск MySQL работает с учётом морфологииНа практике этого добиться не получилось

209
SQL: date и time или datetime

SQL: date и time или datetime

Добрый деньПоявился вопрос, у меня есть таблица в MySQL в которой каждый час будет записываться данные с датчиков (датчиков более 500 штук)

176
Определение энтропии сообщения [требует правки]

Определение энтропии сообщения [требует правки]

Разработать программу для определения энтропии сообщения(C++) В программе должны быть следующие функции:

189
Какая нужна математика для специалиста blockchain технологий? [требует правки]

Какая нужна математика для специалиста blockchain технологий? [требует правки]

Какая нужна математика для специалиста blockchain технологий?

166