Reputation: 93
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
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