#java #hibernate #jpa #orm #many-to-many
#Ява #зимовать #jpa #орм #многие ко многим
Вопрос:
User.java
public class User implements Serializable{ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="ID_USER") private Long idUser; @Column(name="USERNAME") private String username; @Column(name="PASSWORD") private String password; @ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL) @JoinTable( name = "USER_TECHNOLOGY", joinColumns = @JoinColumn(name = "idUser") , inverseJoinColumns = @JoinColumn(name = "idTech") ) private Listlt;Technologygt; techs = new ArrayListlt;Technologygt;(); @Column(name="INTEREST_FIELD") private String interestField; @Column(name="STATUT") private boolean statut; @Column(name="ACCOUNT_TYPE") private String accountType; }
Technology.java
public class Technology implements Serializable{ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="ID_TECHNOLOGY") private int idTech; @Column(name="NAME_TECHNOLOGY") private String nameTech; }
Метод addTechnology
public void addTechnology(User u,Technology t) { EntityTransaction transaction = em.getTransaction(); transaction.begin(); try { u.getTechs().add(t); this.em.persist(t); transaction.commit(); }catch(Exception e) { transaction.rollback(); e.printStackTrace(); System.out.println("Erreur Add Technology"); } }
testEntities.java
public static void main(String[] args) { UserService us = new UserService(); User user1 = new User("username1","password1",true,"accountType1"); User user2 = new User("username2","password2",true,"accountType2"); User user3 = new User("username3","password3",true,"accountType3"); us.addUser(user1); us.addUser(user2); us.addUser(user3); TechnologyService ts=new TechnologyService(); Technology tech1 = new Technology("JAVA"); Technology tech2 = new Technology("HIBERNATE"); Technology tech3 = new Technology("LARAVEL"); ts.addTechnology(user1, tech1); ts.addTechnology(user2, tech2); ts.addTechnology(user1, tech3); System.out.println("--------techs---------"); for (Technology tech : user1.getTechs()) { System.out.println(tech.getNameTech()); }
the mapping table is generated but nothing is inserted in it hibernate log ==gt;
05 декабря 2021 года 1:30:27 УТРА org.hibernate.engine.транзакция.jta.платформа.внутренняя.JtaPlatformInitiator инициирует ИНФОРМАЦИЮ об услуге: HHH000490: Использование реализации JtaPlatform: [org.hibernate.engine.транзакция.jta.платформа.внутренняя.NoJtaPlatform] Спящий режим: вставка в значения ПОЛЬЗОВАТЕЛЯ (ТИП УЧЕТНОЙ ЗАПИСИ, ПОЛЕ ИНТЕРЕСОВ, ПАРОЛЬ, СТАТУС, ИМЯ ПОЛЬЗОВАТЕЛЯ) (?, ?, ?, ?, ?) Спящий режим: вставка в значения ПОЛЬЗОВАТЕЛЯ (ТИП УЧЕТНОЙ ЗАПИСИ, ПОЛЕ ИНТЕРЕСОВ, ПАРОЛЬ, СТАТУС, ИМЯ ПОЛЬЗОВАТЕЛЯ) (?, ?, ?, ?, ?) Спящий режим: вставка в значения ПОЛЬЗОВАТЕЛЯ (ТИП УЧЕТНОЙ ЗАПИСИ, ПОЛЕ ИНТЕРЕСОВ, ПАРОЛЬ, СТАТУС, ИМЯ ПОЛЬЗОВАТЕЛЯ) (?, ?, ?, ?, ?) 05 декабря 2021 года 1:30:27 орг.спящий режим.jpa.внутренний.util.LogHelper logpersistenceunitинформация ИНФОРМАЦИЯ: HHH000204: Обработка данных о сохраняемости [имя: UP_CAT] 05 декабря 2021 1:30:27 УТРА org.hibernate.engine.jdbc.соединения.внутренние.DriverManagerConnectionProviderImpl настроить ПРЕДУПРЕЖДЕНИЕ: HHH10001002: Использование встроенного пула подключений Hibernate (не для производственного использования!) 05 декабря 2021 года 1:30:27 УТРА организация.спящий режим.двигатель.jdbc.соединения.внутренние.DriverManagerConnectionProviderImpl ИНФОРМАЦИЯ о создателе сборки: HHH10001005: использование драйвера [com.mysql.cj.jdbc.Драйвер] по URL [jdbc:mysql://локальный хост:3306/JAVA_PROJECT] 05 декабря 2021 1:30:27 AM org.спящий режим.двигатель.jdbc.соединения.внутренние.DriverManagerConnectionProviderImpl ИНФОРМАЦИЯ о создателе: HHH10001001: Свойства подключения: {пароль=****, пользователь=root} 05 декабря 2021 1:30:27 УТРА org.hibernate.engine.jdbc.подключения.внутренние.DriverManagerConnectionProviderImpl ИНФОРМАЦИЯ о создателе: HHH10001003: Режим автоматической фиксации: ложь 05 декабря 2021 1:30:27 УТРА организация.спящий режим.двигатель.jdbc.соединения.внутренние.DriverManagerConnectionProviderImpl$ИНФОРМАЦИЯ о подключениях в пуле: HHH000115: Размер пула подключений в режиме гибернации: 20 (мин=1) 05 декабря 2021 г. 1:30:27 организация.спящий режим.диалект.Информация о диалекте: HHH000400: Использование диалекта: org.hibernate.диалект.MySQL5Dialect 05 декабря 2021 1:30:27 УТРА организация.спящий режим.ресурс.транзакция.серверная часть.jdbc.внутренняя.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection ИНФОРМАЦИЯ: HHH10001501: Соединение получено из JdbcConnectionAccess [org.hibernate.engine.jdbc.env.внутренний.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@546394ed] для (не JTA) выполнения DDL не было в режиме автоматической фиксации; Соединение «локальная транзакция» будет зафиксировано, и соединение будет переведено в режим автоматической фиксации. Спящий режим: изменить таблицу USER_TECHNOLOGY добавить ограничение fkhoytivrns26pg25co355p1fa внешний ключ (idTech) ссылается на ТЕХНОЛОГИЮ (ID_TECHNOLOGY) Спящий режим: изменить таблицу USER_TECHNOLOGY добавить ограничение FK4uc2lldfgi2eag02v34yes345 внешний ключ (идентификатор пользователя) ссылается на ПОЛЬЗОВАТЕЛЯ (ID_USER) 05 декабря 2021 г. 1:30:27 AM организация.спящий режим.механизм.транзакция.jta.платформа.внутренняя.JtaPlatformInitiator инициирует ИНФОРМАЦИЮ об услуге: HHH000490: Использование реализации JtaPlatform: [org.hibernate.engine.транзакция.jta.платформа.внутренняя.NoJtaPlatform] Спящий режим: вставка в значения ТЕХНОЛОГИИ (NAME_TECHNOLOGY) (?) Спящий режим: вставка в значения ТЕХНОЛОГИИ (NAME_TECHNOLOGY) (?) Спящий режим: вставка в значения ТЕХНОЛОГИИ (NAME_TECHNOLOGY) (?)
Комментарии:
1. @ManyToMany(mappedBy=»техники») личный списокlt;Пользовательgt; пользователи = новый списокlt;Пользовательgt;lt;Пользовательgt;();