HIbernate 不会为@OneToOne 创建外键
HIbernate doesn't create Foreign key for @OneToOne
我有两个表:
@Entity
public class TestEntity {
@Id
@Column(name = "id")
private UUID id;
@OneToOne(targetEntity = InfoEntity.class, cascade = CascadeType.ALL)
@JoinColumn(name="id", referencedColumnName = "id")
private InfoEntity info;
...
}
@Entity
public class InfoEntity {
@Id
@Column(name = "id")
private UUID id;
@OneToOne(mappedBy = "info")
private TestEntity test;
...
}
基本上我想通过两个表中相同的id字段定义一个从TestEntity
到InfoEntity
的外键。问题是,当我在 IntelliJ Idea 中检查数据库时,我在键部分(检查了两个表)中看不到任何外键,只有它们的 PK。这段代码有问题吗?我已经按照另一个类似问题中的建议设置了 属性:
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
问题是 JoinColumn
中的 name 的值为 id。将其更改为 info_id 例如:
@OneToOne(targetEntity = InfoEntity.class, cascade = CascadeType.ALL)
@JoinColumn(name="info_id", referencedColumnName = "id")
private InfoEntity info;
您 TestEntity
已经有一个列 id
,因此它必须有另一个名称。
我有两个表:
@Entity
public class TestEntity {
@Id
@Column(name = "id")
private UUID id;
@OneToOne(targetEntity = InfoEntity.class, cascade = CascadeType.ALL)
@JoinColumn(name="id", referencedColumnName = "id")
private InfoEntity info;
...
}
@Entity
public class InfoEntity {
@Id
@Column(name = "id")
private UUID id;
@OneToOne(mappedBy = "info")
private TestEntity test;
...
}
基本上我想通过两个表中相同的id字段定义一个从TestEntity
到InfoEntity
的外键。问题是,当我在 IntelliJ Idea 中检查数据库时,我在键部分(检查了两个表)中看不到任何外键,只有它们的 PK。这段代码有问题吗?我已经按照另一个类似问题中的建议设置了 属性:
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
问题是 JoinColumn
中的 name 的值为 id。将其更改为 info_id 例如:
@OneToOne(targetEntity = InfoEntity.class, cascade = CascadeType.ALL)
@JoinColumn(name="info_id", referencedColumnName = "id")
private InfoEntity info;
您 TestEntity
已经有一个列 id
,因此它必须有另一个名称。