Внешний ключ, ссылающийся на MasterDataEntity из MainTableEntity, имеет неправильный номер столбца - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть таблица основных данных.Использование этой таблицы заключается в том, чтобы просто хранить данные (как таковые, они не имеют отношения к другим таблицам).

Это MasterDataEntity

@Id
@Column(name = "TYPE_ID")
private Integer id;

@Id
@Column(name = "DESCRIPTION")
private String description;

В другой таблице (функционалтаблица), я хочу присоединиться к этой таблице.Например:

Это MainTableEntity:

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "TYPE_ID")
private MasterDataEntity masterDataEntity;

Логическим намерением здесь является то, что Maintable должен содержать один из Type_Id MasterTable (не обязательно для всех строк даже).

Я не хочу хранить какую-либо информацию о MainTable в MasterTable.Все, что я хочу, - это только существующие значения из основной таблицы, которые могут быть добавлены в основную таблицу.

Помимо вышеизложенного, я сделал следующие запросы, чтобы отметить отношение FK:

ALTER TABLE MAIN_TABLE ADD TYPE_ID NUMBER;

ALTER TABLE MAIN_TABLE ADD FOREIGN KEY (TYPE_ID ) REFERENCES MASTER_TABLE(TYPE_ID );

С помощью приведенного выше кода я получаю сообщение об ошибке: Внешний ключ, ссылающийся на MasterDataEntity из MainTableEntity, имеет неправильный номер столбца.должно быть 2.

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

Может кто-нибудь подсказать, что здесь не так и что я должен делать для достижения своих целей?

Спасибо

PS: Я упомянул только соответствующую информацию.Очевидно, что в MainEntity есть много других столбцов, тогда как MasterEntity имеет только 2 столбца.Дайте мне знать, если требуется какая-либо информация.

1 Ответ

0 голосов
/ 28 декабря 2018

Это может быть из-за того, что MasterDataEntity имеют несколько первичных ключей, так как поля id и description имеют @Id Аннотация,
Это должно быть только одно, которое предназначено для TYPE_ID:

@Id
@Column(name = "TYPE_ID")
private Integer id;

@Column(name = "DESCRIPTION")
private String description;
...