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)
每次我启动该应用程序时,在启动过程中都会出现此错误(即使该应用程序看起来运行良好...)
我有相同的错误消息,我发现这是由不正确的注释引起的。休眠试图运行
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)。
我希望这对以后的人有所帮助。