我尝试在Spring中创建具有一对多,多对多关系的简单表,但它不会在mysql中创建任何表。它编译没有任何错误,我不知道为什么。
有3个实体类。学生,课程,专业。课程与学生有很多很多关系。专业与学生有一对多的关系。
package com.example.demo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
@Entity
public class Course {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column
private String Course;
@ManyToMany
@JoinColumn(name = "student_id")
private Student Student;
public Course() { }
public Course(int id, String course, com.example.demo.Student student) {
super();
this.id = id;
Course = course;
Student = student;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCourse() {
return Course;
}
public void setCourse(String course) {
Course = course;
}
public Student getStudent() {
return Student;
}
public void setStudent(Student student) {
Student = student;
}
}
专业课程:
package com.example.demo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
@Entity
public class Profession {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column
private String Profession;
@OneToMany
@JoinColumn(name="student_id")
private Student Student;
public Profession() {
}
public Profession(int id, String profession, com.example.demo.Student
student) {
super();
this.id = id;
Profession = profession;
Student = student;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProfession() {
return Profession;
}
public void setProfession(String profession) {
Profession = profession;
}
public Student getStudent() {
return Student;
}
public void setStudent(Student student) {
Student = student;
}
}
学生班:
package com.example.demo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import java.util.Set;
import javax.persistence.CascadeType;
@Entity
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column
private String Student;
@OneToMany(mappedBy = "Profession", cascade = CascadeType.ALL)
Set<Profession> profession;
@ManyToMany(mappedBy = "Course", cascade = CascadeType.ALL)
Set<Course> course;
public Student() {
}
public Student(int id, String student, Set<Profession> profession,
Set<Course> course) {
super();
this.id = id;
Student = student;
this.profession = profession;
this.course = course;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStudent() {
return Student;
}
public void setStudent(String student) {
Student = student;
}
public Set<Profession> getProfession() {
return profession;
}
public void setProfession(Set<Profession> profession) {
this.profession = profession;
}
public Set<Course> getCourse() {
return course;
}
public void setCourse(Set<Course> course) {
this.course = course;
}
}
答案 0 :(得分:0)
在application.properties中,您需要设置此属性
spring.jpa.hibernate.ddl-auto = create
你的ManyToMany映射也有问题,你需要指定joinTable而不是join列,除非你想创建2个连接表