gpt4 book ai didi

java - jpa引用外部表而不是JoinColumn中的外部列

转载 作者:行者123 更新时间:2023-12-01 19:46:25 25 4
gpt4 key购买 nike

应用程序历史记录以及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)

那么,为什么当 jpa 尝试创建表时缺少 (app_id)

注释:我在

  • mysql v8.0.12
  • mysql-connector-java v8.0.13
  • spring-boot v2.1.0.RELEASE
  • 完整代码 here :
  • 日志为 here

最佳答案

改变你的

@JoinColumn(name = "appId")

@JoinColumn(name = "app_id")

这应该有效。

关于java - jpa引用外部表而不是JoinColumn中的外部列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53150505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com