【发布时间】:2016-05-05 11:00:35
【问题描述】:
我有一个正在运行的带有 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
我有两个表/实体
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;
}
在 Interruttore.java 我与 Illuminazione 有 @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;
}
每次我启动应用程序时,在启动期间我都会收到此错误(即使应用程序看起来运行良好......)
【问题讨论】:
-
idInterruttore是主键吗?如果有,为什么要使用uniqueConstraints = @UniqueConstraint(columnNames = "id_interruttore")?你如何引导 Hibernate(更新架构、创建、什么都不做)? -
我对休眠什么都不做,数据库已经在那里,我只是连接到它。我连接SpringBoot默认进程
-
看起来,Hibernate 无法添加
FK_4kmtr3q9e2hnaoutsxgahhm63,因为您的架构已经具有其他名称的此类约束。 -
@besmart,你设法让代码工作了吗?我面临同样的问题。非常感谢任何帮助。
-
使用普通@Id注解检查