У меня проблема с изменением приложения Spring / Hibernate с MySql на SQL Server.
Когда Hibernate обновляет базу данных, запуская сервер, который он хочет создать (при hibernate.hbm2ddl.auto
установленном на update
) базу данных, но внешний ключ завершается ошибкой при следующей ошибке:
Unsuccessful: alter table table2 add constraint FKDC2DC97ECEB31922 foreign key (login) references table1
Column 'table1.id' is not the same data type as referencing column 'table2.table1_login' in foreign key 'FKDC2DC97ECEB31922'.
отображение выглядит следующим образом:
table1:
@Id
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
table2:
@ManyToOne
@JoinColumn (name = "table1_login", referencedColumnName = "login", insertable=false, updatable=false)
public Table1 getTable1() {
return table1;
}
public void setTable1(Table1 table1) {
this.table1= table1;
}
++ редактировать:
SQL выглядит так:
ключи от таблицы 1:
Таблица table1 также используется другим приложением, поэтому для этой таблицы в качестве первичного ключа необходим столбец id. Поэтому table1.id является первичным ключом table1. Но этот table1.id не используется hibernate, потому что hibernate использует table1.login в качестве идентификатора (см. Аннотации выше). Но почему SQL Server пытается установить внешний ключ для table1.id, а не для table1.login?
Спасибо