Приложение и История с OneToMany
:
@Entity
@Table(name = "app")
@SuppressWarnings("serial")
public class App implements Serializable {
@Id @Column(name = "app_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long appId;
private String name;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "app", cascade = CascadeType.PERSIST)
private Set<History> history = new HashSet<>();
//get.set
}
@Entity
@Table(name = "app_history")
@SuppressWarnings("serial")
public class History implements Serializable {
@Id
@Column(name = "history_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long historyId;
@JoinColumn(name = "appId")
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
private App app;
//get.set
}
Просмотр в журнале:
create table app (app_id int8 not null, name varchar(255), primary key (app_id))
create table app_history (history_id int8 not null, app_id int8, primary key (history_id))
alter table app_history add constraint FKeuk3km6r7oklj5xc1ecwvxmkm foreign key (app_id)
references app
Ожидается, что приведенная выше строка будет
alter table app_history add constraint FKeuk3km6r7oklj5xc1ecwvxmkm foreign key (app_id)
references app (app_id)
Итак, почему (app_id)
отсутствует, когда jpa пытается создать таблицу?
Примечания: Я нахожусь
- mysql v8.0.12
- mysql-connector-java v8.0.13
- spring-boot v2.1.0.RELEASE
- Полный код здесь :
- Журналы здесь