Добавление в связующую таблицу (many to many) через JDBC?

173
31 марта 2018, 16:25

Есть бд, в ней 2 сущности и связь many to many, создаю DAO для crud операций, далее возникает вопрос, я хочу создать developer и добавить ему skill. Как мне добавить данные в таблицу skills_developers?

    /*Create table developers*/
    CREATE TABLE developers (
      id   INT          NOT NULL PRIMARY KEY,
      name VARCHAR(100) NOT NULL
      salary VARCHAR(100) NOT NULL
    );
    /*Create table skills*/
    CREATE TABLE skills (
      id   INT          NOT NULL PRIMARY KEY,
      name VARCHAR(100) NOT NULL
    );
    /*Create table skill_developers with links*/
    CREATE TABLE skills_developers (
      dev_id    INT NOT NULL,
      sk_id     INT NOT NULL,
      FOREIGN KEY (dev_id) REFERENCES developers (id),
      FOREIGN KEY (sk_id) REFERENCES skills (id)
    );
public void addDevSkills(String dev_name, String sk_name) {
    String sql = "INSERT  INTO skills_developers (dev_id, sk_id) " +
            "SELECT developers.id, skills.id " +
            "FROM developers, skills " +
            "WHERE d.name = ? AND s.name = ?";
    try (Connection connection = ApplicationJDBC.getConnection()) {
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, developer.getFullName());
        preparedStatement.setString(2, skill.getName());
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

Почему не добавляет в таблицу??

Answer 1
INSERT INTO skills_developers (dev_id, sk_id)
SELECT d.id, s.id
FROM developers d, skills s
WHERE d.name = '?' AND s.name = '?';

В параметрах передаём фамилие персоны и фамилие его умелки.

PS. И неплохо бы сделать

ALTER TABLE skills_developers 
ADD PRIMARY KEY (dev_id, sk_id);

Ну так, чтобы случайно два раза не добавить...

READ ALSO
Yandex Map Kit удаление значка “Я”

Yandex Map Kit удаление значка “Я”

Использую в своем приложении yandex map kitЕсли работает GPS, то на карте появляется значок "Я", который, я так полагаю, перемещается в зависимости...

235
Какие параметры надо указать для h2 базы в xml файле?

Какие параметры надо указать для h2 базы в xml файле?

Прописываю следующие проперти, но идея ругается драйвер - пишет, что не может его загрузить

185
Сортировка TreeSet | java

Сортировка TreeSet | java

Как создать TreeSet объекта какого либо класса, отсортированное по значению переменной объекта этого класса? К примеру есть класс User:

221
JavaFx, Canvas, Тригонометрия

JavaFx, Canvas, Тригонометрия

В общем, суть задачи такая Я хочу по заданному массиву рисовать n угольник(или скорее окружность) его элементов, где n - длинна массива

165