我有两个简单的类Automobil和Ford,它们将记录添加到我的数据库关系OneToOne中。当我检查结果时,我看到密钥没有依次添加。当我将记录添加到存储有Ford表外键的Automobil表时,我看到汽车记录的ID号是1,而表Ford是2,然后是汽车3和Ford 4,为什么会发生这种情况?
汽车类
@Entity(name = "Automobil")
@Table(name = "automobil")
public class Automobil {
@Id
@GeneratedValue
private long id;
private String auto;
@OneToOne
@JoinColumn
private Ford ford;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getAuto() {
return auto;
}
public void setAuto(String auto) {
this.auto = auto;
}
public Ford getFord() {
return ford;
}
public void setFord(Ford ford) {
this.ford = ford;
}
}
福特级
@Entity(name = "Ford")
@Table(name = "ford")
public class Ford {
@Id
@GeneratedValue
private long id;
private String model;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
主类
public class Main {
public static void main(String[] args) {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("tutorialdb");
EntityManager entityManager = entityManagerFactory.createEntityManager();
Automobil auto = new Automobil();
Ford ford = new Ford();
auto.setAuto("Ford");
auto.setFord(ford);
ford.setModel("Mustang");
entityManager.getTransaction().begin();
entityManager.persist(auto);
entityManager.persist(ford);
entityManager.getTransaction().commit();
entityManager.close();
entityManagerFactory.close();
}
}
结果:汽车表
id=1 auto=Ford ford_id=2
id=3 auto=Ford ford_id=4
结果:福特表
id=2 model=mustang
id=4 model=fiesta
由于某种原因,密钥无法创建,为什么会发生这种情况?
Error executing DDL "alter table automobil drop foreign key FKovj5b90x7jrtqauuchxruywn3" via JDBC Statement
最佳答案
这说明它没有被丢弃也没有被创建!
通过JDBC语句执行DDL“更改表automobil删除外键FKovj5b90x7jrtqauuchxruywn3”时出错
因此,一切似乎都很好。
您可以删除@JoinColumn,因为您无需设置任何列名。