Spring启动不会在mysql中创建表

时间:2017-11-05 09:25:57

标签: java mysql spring hibernate spring-boot

我尝试在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;
}
}

1 个答案:

答案 0 :(得分:0)

在application.properties中,您需要设置此属性

spring.jpa.hibernate.ddl-auto = create

你的ManyToMany映射也有问题,你需要指定joinTable而不是join列,除非​​你想创建2个连接表