Проблема гибернации: внешний ключ должен иметь то же количество столбцов, что и указанный первичный ключ
Цель: я хочу, чтобы importJobId в ImportJob использовался в качестве внешнего ключа для идентификатора таблицы размещения, так что когда у нас есть importJobId тогда и только тогда, мы можем иметь идентификатор в распределении, так как без Job не может быть никаких распределений.
Таблица ImportJob имеет составной первичный ключ как [ORGID, IMPORTJOBTYPE], и я пытаюсь получить отношение внешнего ключа в спящем режиме, используя
в Allocation.hbm.xml, который не работает и получаю сообщение об ошибке как:
Foreign key (FKB29B5F7366007086:ALLOCATIONS [importjobid]))
must have same number of columns as the
referenced primary key (IMPORTJOBMANAGMENT [ORGID,IMPORTJOBTYPE])
Вот мой файл ImportJob.hbm.xml
Вот классы bean для справки:
public class AllocationBean extends WorkbenchBeanBase
{
private static final Logger log = Logger.getLogger(AllocationBean.class);
private Float allocations;
private String importJobType;
private long id;
private long orgId;
}
public class ImportJobManagment implements Serializable
{
private long importjobid;
private long orgId;
private String importJobType;
private boolean allocations = false;
}
Я удалилgetter/setter
ради простоты.
Обновление: 1 Как это настроено прямо сейчас, у меня есть столбец id в одной таблице, который имеет ссылку на внешний ключ для составного ключа orgId и importJobType, я не уверен, что мы можем сделать это, и внешний столбец с одним ключом связан с составным ключом другой таблицы, но это 'Это мой вариант использования.
Обновление: 2
Спасибо за потрясающие подробности, это, безусловно, расширит мои знания о реализации внешних ключей, но моя конечная цель - сопоставление между двумя таблицами один к одному, где таблица A имеет составной ключ для идентификации уникальной строки в этой таблице и в таблице B, я хочу иметь первичный ключ, который будет иметь ссылку внешнего ключа на таблицу A, так что если у нас есть запись в таблице A, то такая же запись jobId должна быть в таблице B, теперь я понимаю, что у нас не может быть первичного ключа одного столбца в таблице B, который будет ссылаться на составной ключ в таблице А.
так что в основном я хочу иметь однозначное соответствие между таблицами, где таблица A имеет составной первичный ключ, а таблица B имеет первичный ключ из одного столбца, используя hibernate, что, конечно, вызывает указанную ошибку, и теперь я собираюсь создать составные ключи в таблице. B также, и теперь сделайте ссылку на внешний ключ на таблицу A, я проверю и обновлю свой вопрос позже, еще раз спасибо за подробные данные.