Database @多功能键、外键还是两者都有?
这可能是一个重复的问题,或是一个非常基本的问题,但我需要一些帮助 所以我正在使用spring boot构建一个应用程序,我有学生和班级,很多学生可以在一个班级,所以这是一个多对一的课程。这就是我所做的: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
@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实体中,好吧,让我们现在就发帖子。。。请将属性添加到问题中,我将更新答案。以便其他用户可以从中受益。错误的属性。。这样就很清楚出了什么问题