【问题标题】:How to create table with unidirectional relation in Hibernate?如何在 Hibernate 中创建具有单向关系的表?
【发布时间】:2022-02-05 16:33:24
【问题描述】:

我在 mysql 中有一个空数据库和两个 java 实体。其中之一具有单向关系。当休眠尝试创建表时,我得到了错误:

Error executing DDL "alter table entry add constraint FK6ov2k83sx3crs9v3q8nvjuf1j foreign key (category_name) references category (name)" via JDBC Statement

有我的实体:

@Entity
public class Entry {
    @Id
    @GeneratedValue( strategy = GenerationType.IDENTITY)
    private int id;

    @Column
    private String myfio;

    private String descr;

    @OneToOne(cascade = CascadeType.ALL)
    private Category category;
}

第二个:

@Entity
@Table(name="category")
public class Category {
    @Id
    @Column
    private String name;
}

如何创建不出错的表?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    OneToOne 关系共享相同的 id。所以它应该是相同的类型,但第一个是 int (实际上它应该是 Integer 以允许瞬态(未存储)实体的空值)和第二个一个是字符串。看来您只是错过了一条线。另外,值得一提的是 Vlad Mihalchea 的文章https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

    【讨论】:

    • 我不知道这个细节!我在类别中创建了一个新的整数列,使其成为 id 并且它的工作!谢谢。
    猜你喜欢
    • 2021-05-28
    • 2012-05-02
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多