2016-05-05 20 views
0

私はMysqlとHibernateで実行中のSpringブートアプリケーションを持っています。それを起動している間Spring Hibernate MySql - 外部キー制約を追加できません

、私はこのエラー

Unsuccessful: alter table SMARTPARK.illuminazione add constraint FK_4kmtr3q9e2hnaoutsxgahhm63 foreign key (id_interruttore) references SMARTPARK.interruttori (id_interruttore) 
2016-05-05 08:46:35 ERROR SchemaUpdate:262 - Cannot add foreign key constraint 

を得ている私持って

Illuminazione.javaが2つのテーブル/エンティティ(ちょうど興味深い部分...)

@Entity 
@Table(name = "illuminazione", catalog = "SMARTPARK") 
public class Illuminazione { 
    private int idilluminazione; 
    private Interruttore interruttore; 
    private Date dateTime; 
    private Date lastDateTime; 
    private boolean isLit; 

    @ManyToOne 
    @JoinColumn(name = "id_interruttore") 
    public Interruttore getInterruttore() { 
     return this.interruttore; 
    } 

    public void setInterruttore(Interruttore interruttore) { 
     this.interruttore = interruttore; 
    } 

Interruttore.javaで私は@OneToManyイルミナゾーネとの関係を持っています

@Entity 
@Table(name = "interruttori", catalog = "SMARTPARK", uniqueConstraints = @UniqueConstraint(columnNames = "id_interruttore")) 
public class Interruttore implements java.io.Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private int idInterruttore; 
    private int numeroInterruttore; 
    private String nomeInterruttore; 
    private String descrizione; 
    private List<Luce> luci; 
    private GpioController gpio; 
    private GpioPinDigitalOutput relePin; 
    private Pin pin; 
    private boolean remoto; 
    private boolean stato; 
    private Date dateTime; 
    private Set<Illuminazione> illuminazione; 

@OneToMany(fetch = FetchType.LAZY, mappedBy = "interruttore") 
    public Set<Illuminazione> getIlluminazione() { 
     return illuminazione; 
    } 

    public void setIlluminazione(Set<Illuminazione> illuminazione) { 
     this.illuminazione = illuminazione; 
    } 

私はアプリケーションを起動するたびに、ブート時に私は(...アプリケーションが動作して良いと思われる場合でも)

+0

'idInterruttore'は主キーですか?どうして 'uniqueConstraints = @UniqueConstraint(columnNames =" id_interruttore ")'を使用するのですか?どのようにHibernateをブートストラップ(スキーマの更新、作成、何もしない)しますか? –

+0

私は休止状態で何もしない、DBはすでにそこにある、私はそれに接続するだけです。私はSpringBootのデフォルトプロセスと接続します – besmart

+0

あなたのスキーマはすでに他の名前とそのような制約を持っているため、Hibernateは 'FK_4kmtr3q9e2hnaoutsxgahhm63'を追加できないようです。 –

答えて

0

をこのエラーを取得しています私はによって引き起こされたが分かった同じエラーメッセージを、持っていましたアノテーションが正しくありません。 Hibernateは

alter table cidades 
    add constraint FKdt0b3ronwpi1upsrhaeq6r69n 
    foreign key (estado_id) 
    references estados (id) 

を実行しようとしていたと私は私のCidade.javaを見たとき、私はこのマッピング

@ManyToOne 
@JoinColumn(name = "cidade_id") 
private Estado estado; 

エラーが"estado_id"されている必要があります"cidade_id"、中にいた。い入力エラーによってエラーが発生する可能性があるため、@besmartがDBテーブル情報を提供できる場合は大丈夫です(例:id_interruttoreは実際にはid_interruttoriです)。

これは将来的に誰かを助けてくれることを願っています。

関連する問題