Spring Hibernate MySql-无法添加外键约束

bes*_*art 1 mysql spring hibernate

我有一个运行Mysql和Hibernate的Spring Boot应用程序。

启动它时,出现此错误

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
Run Code Online (Sandbox Code Playgroud)

我有两个表/实体

Illuminazione.java是(只是有趣的部分...)

@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;
    }
Run Code Online (Sandbox Code Playgroud)

在Interruttore.java中,我@OneToMany与Illuminazione 有关系

@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;
    }
Run Code Online (Sandbox Code Playgroud)

每次我启动该应用程序时,在启动过程中都会出现此错误(即使该应用程序看起来运行良好...)

Gus*_*Gus 5

我有相同的错误消息,我发现这是由不正确的注释引起的。休眠试图运行

alter table cidades 
    add constraint FKdt0b3ronwpi1upsrhaeq6r69n 
    foreign key (estado_id) 
    references estados (id)
Run Code Online (Sandbox Code Playgroud)

当我看着我的时Cidade.java,我发现了这个映射

@ManyToOne
@JoinColumn(name = "cidade_id")
private Estado estado;
Run Code Online (Sandbox Code Playgroud)

错误在"cidade_id",应该是"estado_id"。如果@besmart可以提供数据库表信息,那就太好了,因为错误可能是由拼写错误引起的(例如id_interruttore,实际上可能是id_interruttori)。

我希望这对以后的人有所帮助。