Поэтому я реверс-инжиниринг некоторых таблиц из моей БД, и когда я пытаюсь сохранить свой объект в БД, я получаю следующую ошибку:
Первоначальное создание SessionFactory failed.org.hibernate.AnnotationException: внешний ключ, ссылающийся на com.mycode.Block из com.mycode.Account, имеет неправильный номер столбца. должно быть 2
Исключение в потоке "main" java.lang.ExceptionInInitializerError
Объекты Домена являются Блочными, которые содержат несколько Объектов Пользователя:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "Block")
public Set<EAccount> getAccounts() {
return this.Accounts;
}
Учетная запись имеет составной ключ идентификатора и роли. Это было настроено в отдельном классе:
@Embeddable
public class BlockAccountId implements java.io.Serializable {
private long blockOid;
private String accountRole;
public BlockAccountId() {
}
public BlockAccountId(long blockOid, String accountRole) {
this.blockOid = blockOid;
this.accountRole = accountRole;
}
@Column(name = "BLOCK_OID", nullable = false)
public long getBlockOid() {
return this.blockOid;
}
public void setBlockOid(long blockOid) {
this.blockOid = blockOid;
}
@Column(name = "ACCOUNT_ROLE", nullable = false, length = 10)
public String getAccountRole() {
return this.accountRole;
}
public void setAccountRole(String accountRole) {
this.accountRole = accountRole;
}
Итак, я хочу знать. Как я могу связать таблицы Block и account с blockOid, но при этом обеспечить, чтобы таблица счетов имела и blockOid, и accountRole в качестве составного ключа.
Любые примеры будут с благодарностью!
N.B. Это отношение между Блоком (Один) и Учетной записью (Многие).
Спасибо