JPA-запрос для 3 таблиц - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу создать запрос JPA для настройки нескольких терминалов на один контракт:

CREATE TABLE `contracts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
) ENGINE=InnoDB;

CREATE TABLE `contracts_terminals` (
  `terminal_id` int(11) DEFAULT NULL,
  `contract_id` int(11) DEFAULT NULL,
) ENGINE=InnoDB;

CREATE TABLE `terminals` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB;

Как я могу создать запрос JPA, который использует таблицу contract_terminals для назначения нескольких терминалов одному контракту?

Я использую последнюю версию MariaDB.

Объекты:

Контракты:

    @Entity
    @Table(name = "contracts")
    public class Contracts implements Serializable {

        private static final long serialVersionUID = 3873648042962238717L;

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", unique = true, updatable = false, nullable = false)
        private int id;

        @Column(length = 255)
        private String name;    
        ......
    }

Терминалы:

    @Entity
    @Table(name = "terminals")
    public class Terminals implements Serializable {

        private static final long serialVersionUID = 5288308199642977991L;

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", unique = true, updatable = false, nullable = false, length = 3)
        private int id;

        @Column(length = 255)
        private String name;
        ....
    }

ContractTerminals:

@Entity
@Table(name = "contract_terminals")
public class ContractTerminals implements Serializable {

    private static final long serialVersionUID = 1191148141983861602L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", unique = true, updatable = false, nullable = false)
    private int id;

    @Column(length = 4)
    private Integer terminal_id;

    @Column(length = 4)
    private Integer contract_id;
    ....
}
...