我的 Spring Boot 应用程序(使用休眠)有问题。我有以下 3 个实体。当我运行我的应用程序时,我的数据库架构将自动创建(正是我想要的),但用于 FK 和关系部分。我应该有一个 FK 的地方,我只有一个 INT 列女巫没有引用任何内容......
请在 3 个实体下方和底部找到生成的架构...
PS:我正在使用 MySQL。
成分
@Entity
@Table(name="ingredients")
public class Ingredient {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="name", length=50)
private String name;
@ManyToMany
@JoinTable(
name="recipe_ingredient",
joinColumns=@JoinColumn(name="ingredient_id"),
inverseJoinColumns=@JoinColumn(name="recipe_id"))
private List<Recipe> recipes;
++ getters and setters
食谱
@Entity
@Table(name="recipes")
public class Recipe {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="title", length=100)
private String title;
@Column(name="description", length=3000)
private String description;
@Column(name="short_presentation", length=200)
private String shortPresentation;
@Column(name="image_url", length=200)
private String imageUrl;
@ManyToMany
@JoinTable(
name="recipe_ingredient",
joinColumns=@JoinColumn(name="recipe_id"),
inverseJoinColumns=@JoinColumn(name="ingredient_id"))
private List<Ingredient> ingredients;
@Column(name="minutes")
private int cookingTimeInMinutes;
@ManyToOne(cascade={CascadeType.DETACH,CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name="difficulty_id")
private Difficulty difficulty;
+ getters and setters
困难
@Entity
@Table(name="difficulties")
public class Difficulty {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="difficulty", length=50)
private String difficulty;
@OneToMany(mappedBy="difficulty",
cascade= {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
private List<Recipe> recipes;
+ getters and setters
应用程序属性
spring.jpa.hibernate.ddl-auto = update
非常感谢!
可能您的配置默认为 MyISAM 存储引擎,根据文档不支持 FK 。
请将您的休眠方言配置为 InnoDB:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句