Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
1

Hibernate использование таблицы manytomany

02.03.2020, 21:56. Показов 1212. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Entity:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Entity
@Table(name = "company")
public class Company {
    @Id
    @NotNull
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    @Column(name = "name")
    private String name;
 
    @ManyToMany(cascade = { CascadeType.ALL })
    @JoinTable(
            name = "jobs",
            joinColumns = { @JoinColumn(name = "company_id") },
            inverseJoinColumns = { @JoinColumn(name = "services_id") }
    )
    private Set<Services> services = new HashSet<>();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Entity
@Table(name = "services")
public class Services {
    @Id
    @NotNull
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    @ManyToMany(mappedBy = "services")
    private Set<Company> company = new HashSet<>();
 
    @Column(name = "name")
    private String name;
 
}

Создаю entity jobs и пытаюсь связать с таблицей user(Нужна таблица(jobs) в которой поля компания - вакансия - юзер, т.к компания и вакансии свзянаы manyToMany, то, логично, нужно использовать связующую их таблицу):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Entity
@Table(name = "jobs")
public class Jobs {
 
    @Id
    @NotNull
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    @OneToMany(mappedBy = "job", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Set<User> users;
 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Entity
@Table(name = "users")
public class User {
    @Id
    @NotNull
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    @Column(name = "username")
    private String username;
 
    @ManyToOne
    @JoinColumn(name = "jobs_id")
    private Jobs job;
 
}
получаю: Foreign key (FKete2b969s47510sw68ntvjxi:users [jobs_id])) must have same number of columns as the referenced primary key (jobs [company_id,services_id])
Либо я неправильную архитектуру создаю, либо в гугле проблематично это нагуглить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2020, 21:56
Ответы с готовыми решениями:

Hibernate и аннотация @ManyToMany(fetch=FetchType.EAGER)
И так , добрый день! Сразу к делу. Имеем две модели данных связанные между собой аннотацией...

Eclipse использование Hibernate
Доброго времени суток! пытаюсь использовать Hibernate tools в eclipse, но натыкаюсь на огромное...

Hibernate: создание таблицы-замыкания
Доброго времени суток! Прошу помощи по реализации такой сущности в Hibernate, таблица...

Hibernate. Вернуть некоторые колонки из таблицы
Добрый вечер. Пишу небольшой проект на связки Spring/Angular 5. При работе с базой данных при...

4
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.03.2020, 10:25 2
vlad mihalcea - вот этого господина загугли и примеры посмотри
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
03.03.2020, 21:57  [ТС] 3
что-то не нашел ничего похожего. Мне нужно таблицу, которая создана manyToMany связать еще с одной таблицей тоже manyToMany, что только не пробовал добиться этого не получается
0
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
04.03.2020, 06:11 4
Александр321321, как насчёт этого?
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
04.03.2020, 07:14  [ТС] 5
В примере просто свзязь двух таблиц, с этим у меня все отлично. У меня такая же связь у таблиц Company и Services(в примере выше), на основе которой создается таблицу Jobs. Я создаю Entity jobs в которой есть свои дополнения и при этом в jobs есть id, и есть ссылки на company и services и теперь, когда я пытаюсь создать точно такую же связь между jobs и любой другой таблицей получаю ошибку, которая описана выше. Везде пишут что таблицы надо связать по всем ключам, но как бы я не пробовал не получается
Java
1
2
3
4
5
6
7
@JoinColumns({
       @JoinColumn(name = "jobs_id", referencedColumnName = "jobs_id"),
       @JoinColumn(name = "company_id", referencedColumnName = "company_id")
       @JoinColumn(name = "services_id", referencedColumnName = "services_id")
        
    })
    private Jobs job;
0
04.03.2020, 07:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2020, 07:14
Помогаю со студенческими работами здесь

Hibernate удалить все записи из таблицы
Добрый день друзья! Не могу разобраться как удалить все записи из таблицы. Использовал запрос ...

Hibernate и необходимость связывать таблицы между собой
Есть база, в ней есть вот такая вот связь между сущностью рабочий, информация о нём и тип...

Hibernate и аннотации - связь таблицы саму к себе
День добрый. Помогите разобраться и составить корректную модель таблицы для Hibernate. ...

Hibernate ManyToMany
Помоге пожалуйста или укажите на нормальный рабочий пример. Создавал аннотацией отношения (по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru