Hammerspace
Hammerspace

Reputation: 93

Unable to generate foreign key with Hibernate

I am unable to generate a foreign key in my "Pet" entity. The schema was successfully generated using "spring.jpa.hibernate.ddl-auto=create", but my tables are not linked due to the lack of a foreign key.

I added "hibernate.dialect.storage_engine=innodb" to "appliction.properties" which yielded nothing and I think InnoDB is the default engine now anyway.

Pet.java

@Entity
@Table(name="pet")
public class Pet {

    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Id
    private int id;

    @Column(name="name")
    private String name;

    @Column(name="type_of_pet")
    private String typeOfPet;

    @ManyToOne(cascade={CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
    @JoinColumn(name="owner_id")
    private Owner owner;

    public Pet(String name, String typeOfPet) {
        this.name = name;
        this.typeOfPet = typeOfPet;
    }

    public Pet() {

    }

Owner.java

@Entity
@Table(name="owner")
public class Owner {

    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Id
    private int id;

    @Column(name="name")
    private String name;

    @OneToMany(mappedBy="owner", cascade={CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
    private List<Pet> pets;

    public Owner(String name) {
        this.name = name;
    }

    public Owner() {

    }

Everything is generated except the foreign key I expected in the Pet table.

Upvotes: 0

Views: 431

Answers (1)

Hammerspace
Hammerspace

Reputation: 93

When I added "spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect" to "application.properties" the foreign key was finally added. This would not work while I was using "org.hibernate.dialect.MySQL5Dialect" (default dialect).

Upvotes: 1

Related Questions