spring/hibernate アプリケーションを MySql から SQL Server に変更する際に問題があります。
hibernate.hbm2ddl.auto
Hibernate がサーバーを起動してデータベースを更新しているときに、( set on で) データベースを作成したいのです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'.
マッピングは次のとおりです。
表1:
@Id
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
テーブル 2:
@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 は次のようになります。
table1 のキー:
テーブル table1 は他のアプリケーションでも使用されているため、このテーブルには列「id」が主キーとして必要です。したがって、table1.id は table1 の主キーです。ただし、この table1.id は hibernate では使用されません。これは、hibernate が table1.login を ID として使用するためです (上記の注釈を参照)。しかし、SQL Server が外部キーを table1.login ではなく table1.id に設定しようとするのはなぜでしょうか?
ありがとう