Hibernate 不会自动创建 FK 关系和引用(使用 Spring Boot)

米海塔191

我的 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法创建具有NULL id mongo hibernate-mongo和spring boot的对象的引用

使用MySQL和Hibernate进行Spring Boot

是否可以使Spring Boot JPA Hibernate应用程序自动创建具有必要列和来自JPA实体的关系的表?

Spring Boot和休眠。日期自动创建

如何使用Spring Boot和Hibernate在ManyToOne关系中强制执行Join查询?

Spring Boot 2.3.0-MongoDB库不会自动创建索引

使用Spring Boot 1.5.9和Hibernate在保存时获取自动生成的ID

使用Spring和Hibernate自动创建/更新表

如何使用现代的Spring Boot + Data JPA和Hibernate设置生成ddl创建脚本?

杰克逊与Spring Boot和Hibernate-使用@JsonIdentityInfo从ID创建对象

Spring Boot和Hibernate Validator版本

OneToMany和ManyToOne映射Spring Boot / Hibernate

如何使用 Spring Boot 配置 JPA + HIBERNATE

Spring Boot + Security + Thymeleaf和CSRF令牌不会自动注入

Spring boot :Hibernate 注解

带有 Hibernate Search 的 Spring Boot 2,保存时不会创建索引

Spring Boot是否会自动解析Javax和Hibernate验证批注中的消息密钥

将 Hibernate 与 Spring Boot、Wildfly 和 Oracle DB 结合使用

如何使用Hibernate和Spring Boot启用批量插入

如何使用spring-boot和hibernate解决stackoverflow异常?

使用Hibernate,Spring Boot和JavaFX生成JAR

无法使用Spring Boot和Hibernate连接到Oracle

Spring Boot和Spring Data:如何管理Hibernate会话?

Hibernate不会在Spring Boot Project中引发LazyInitializationException

当repository.save时,Spring Boot + JPA + Hibernate不会提交

如何在Spring Boot中自动连接Hibernate SessionFactory

Spring 4.2.4(不使用Spring Boot)+ EhCache 3 + Hibernate 4.2.1

使用Hibernate进行Spring Boot:在已经存在的情况下继续创建数据库

使用Hibernate搜索的Spring Boot-在Elasticsearch上未创建索引