внешний ключ должен иметь такое же количество столбцов, что и спящий спящий первичный ключ - многие для многих

У меня есть классы домена - пользователь, роль, группа, роль группы

Пользовательский домен

private long id, 
private String userName, 
private String password, 
Set roles = new HashSet();

<Сильный> User.hbm.xml



        
            
        
        
        
        

        
            
            
        

        
            
            
         



У меня есть таблица user_grouprole в качестве таблицы соединений для пользователя и набора grouproles У меня есть таблица user_role как таблица соединений для пользователя и набор ролей

Групповой домен

private long id;
private String groupName;
private Set roles = new HashSet();

<Сильный> Group.hbm.xml


 
 
        
 
 

 
        
        
    

<Сильный> GroupRole

private long id;
private Role role;
private Group group;

<Сильный> GroupRole.hbm.xml


    
            
    
    

     

 

When I try to test with a main class, I get a mapping error like a hibernate mapping error like Foreign key (FK5110401A8398947:user_grouprole [group_role_id])) must have same number of columns as the referenced primary key (group_role [group_id,role_id])

Что это за ошибка? Почему я получаю эту ошибку? Что мне делать, чтобы исправить эту ошибку ??? Любые решения? Может кто-нибудь объяснить, что это за ошибка?

Заранее спасибо

2
nl ja de
Класс GroupRole содержит группу и объект Role. этот объект grouprole должен быть сопоставлен с User. Пользователь имеет много groupRoles.
добавлено автор Sri, источник
можете ли вы объяснить, что делает класс «GroupRole»? из определения домена кажется, что это не что иное, как таблица соединений ... тогда почему вы определяете для него класс?
добавлено автор ye9ane, источник

1 ответы

Ваша ошибка говорит о том, что ваш USER USER содержит внешний ключ в столбце с именем GROUP_ROLE_ID, но ваша таблица с привязкой GROUP_ROLE определяет ее первичный ключ с двумя столбцами ROLE_ID и GROUP_ID, который, кстати, очень распространен для таблиц отношений.

Мне кажется, что единственная причина, по которой вы сопоставляете GroupRole, заключается в том, что она вам нужна в вашем пользовательском объекте. Ну, если ваша модель домена действительно правильная, тогда вам нужно подумать о том, как вы хотите синхронизировать ПК пользователя и группу ПК GroupRole. Для этого вы можете:

  1. Создайте объект PK для составного ключа или правильно определите свой идентификатор в своих сопоставлениях;
  2. Измените определение PK в таблице GroupRole.

С наилучшими пожеланиями.

3
добавлено
Я видел эту же ошибку в случае, когда таблица no имеет более одного ПК. Удалось ли вам это решить?
добавлено автор Casey, источник
спасибо за ваше предложение @thiago. У меня user_grouprole в качестве таблицы соединений для USER и GROUP_ROLE и user_grouprole есть 2PK, 1. user_id - указывает идентификатор USER, 2. group_role_id - ссылается на идентификатор GroupRole. GROUP_ROLE имеет 1PK (id) и 2FK (Group_id и Role_id). Но все же я получаю ту же ошибку с Внешний ключ user_grouprole [group_role_id]) должен иметь такое же количество столбцов, что и ссылочный первичный ключ (group_role [group_id, role_id])
добавлено автор Sri, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Spring Framework and more
Spring Framework and more
839 участник(ов)

чат о spring framework и связанных с ним технологиях. We're discussing: job, tech questions, beer meet up/networking: tech review ,LinkedIn skills, SOF q/a raise up& etc. languages: russian,java,eng.

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async