Прежде всего, я хотел бы отметить, что я новичок в Spring и Hibernate.
Я пытался соединить Hibernate с MySQL (используя Spring Data), что я успешно сделал, однако, когда я пытаюсь сделать вставку, я не могу заставить ее делать то, что я хочу.
Я пытаюсь создать класс User с ArrayList, который содержит предпочитаемые языки кодирования.
Например:
- Пользователь 1: C, Java, C ++
- Пользователь 2: Python, Java, C ++
Однако я заметил, что Hibernate создаст новую строку в таблице «Языки», даже если она уже есть. Я также хочу сохранить «идентификатор» в качестве первичного ключа и в качестве числового значения.
Ниже показано, как в данный момент языки вставляются в таблицу: `
+----+--------+
| id | name |
+----+--------+
| 2 | C |
| 3 | Java |
| 4 | C++ |
| 6 | Python |
| 7 | Java |
| 8 | C++ |
+----+--------+
Вот как я хочу их:
+----+--------+
| id | name |
+----+--------+
| 2 | C |
| 3 | Java |
| 4 | C++ |
| 6 | Python |
+----+--------+
Я пробовал разные методы, но они всегда повторяют значения ...
Это мой класс пользователя:
@Entity
public class User {
@Id
@GeneratedValue
private int id;
private String username;
@OneToMany(cascade = CascadeType.ALL)
private List<Language> languages;
...
}
А это мой языковой класс:
@Entity
public class Language {
@Id
@GeneratedValue
private int id;
private String name;
...
}
РЕДАКТИРОВАТЬ: Вот как я добавляю языки для каждого пользователя (это просто тест, а не окончательный код):
ArrayList<Language> languages = new ArrayList<>();
languages.add(new Language("C"));
languages.add(new Language("Java"));
languages.add(new Language("C++"));
Image image = null;
User admin = new User("iscle", "albertiscle9@gmail.com", "Test_Password", languages, image);
userRepository.save(admin);
ArrayList<Language> languages2 = new ArrayList<>();
languages2.add(new Language("Python"));
languages2.add(new Language("Java"));
languages2.add(new Language("C++"));
Image image2 = null;
User admin2 = new User("iscle", "albertiscle9@gmail.com", "Test_Password", languages2, image2);
userRepository.save(admin2);
Любая помощь будет оценена :) 1032 *
Спасибо заранее,
Iscle