Есть бд, в ней 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();
}
}
Почему не добавляет в таблицу??
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);
Ну так, чтобы случайно два раза не добавить...
Сборка персонального компьютера от Artline: умный выбор для современных пользователей