Database @多功能键、外键还是两者都有?

Database @多功能键、外键还是两者都有?,database,spring,jpa,Database,Spring,Jpa,这可能是一个重复的问题,或是一个非常基本的问题,但我需要一些帮助 所以我正在使用spring boot构建一个应用程序,我有学生和班级,很多学生可以在一个班级,所以这是一个多对一的课程。这就是我所做的: @Entity @Data public class Eleve implements Serializable{ @Id @GeneratedValue private int idEt; private String nomEt; private String prenomEt; @C

这可能是一个重复的问题,或是一个非常基本的问题,但我需要一些帮助

所以我正在使用spring boot构建一个应用程序,我有学生和班级,很多学生可以在一个班级,所以这是一个多对一的课程。这就是我所做的:

@Entity 
@Data 
public class Eleve implements Serializable{

@Id
@GeneratedValue
private int idEt;
private String nomEt;
private String prenomEt;
@Column(length=1)
private String sexe;
private Date dobEt;
private String adresseEt;
private String telEt;
private String parentName;
private Date dateInscription;
private Date dateSortie;

@ManyToOne
private Classe classe;
}

这是有效的,我在eleve表中看到了
classe\u id\u cl
,但它不是外键!此列可以接受任何值

更新 顺便说一句,这是我的应用程序。属性:

spring.datasource.url=jdbc:mysql://localhost:3306/spring-boot-edss
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.session.store-type=none
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

是否需要使用flywayDB之类的东西并强制将其作为外键?

您应该在多通映射上指定连接列:

@ManyToOne
@JoinColumn(name = "columnname")
private Classe classe;
更新

好的,根据application.properties,您使用的方言不支持外键constraint

正确的配置应为:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

应在多通映射上指定联接列:

@ManyToOne
@JoinColumn(name = "columnname")
private Classe classe;
更新

好的,根据application.properties,您使用的方言不支持外键constraint

正确的配置应为:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

那么您指的是启动期间的自动模式创建吗?是的,目前,
spring.jpa.hibernate.ddl auto=create
您是否在Classe实体上添加了@OneToMany映射?我只是指定了一种方法。我的意思是只有在Etudiant实体中,好吧,让我们现在就发帖子。。。请将属性添加到问题中,我将更新答案。以便其他用户可以从中受益。错误的属性。。因此,它清楚什么是错误的,所以您指的是启动期间的自动模式创建?是的,目前,
spring.jpa.hibernate.ddl auto=create
您在Classe实体上添加了@OneToMany映射了吗?我只是指定了一种方法。我的意思是只有在Etudiant实体中,好吧,让我们现在就发帖子。。。请将属性添加到问题中,我将更新答案。以便其他用户可以从中受益。错误的属性。。这样就很清楚出了什么问题