正确设计多对多关系

问题描述

我已经基于Hibernate创建了两个表,它们彼此之间具有多对多关系。

表格:

@Entity
@Table(name = "Interests")
data class Interest(
    var description: String = "") : PanacheEntity()

@Entity
@Table(name = "Accounts")
data class Account(@field:Id var id: UUID? = null,@ManyToOne(fetch = FetchType.LAZY) var gender: Gender? = null,var birthday: Long = 0,@ManyToMany(fetch = FetchType.LAZY,cascade = [CascadeType.PERSIST])
                   @JoinTable(
                       name = "user_interests",joinColumns = [JoinColumn(name = "user_id")],inverseJoinColumns = [JoinColumn(name = "interest_id")]
                   )
                   var interests: List<Interest> = listof()) : PanacheEntityBase

后台,Hibernate创建一个单独的表来保存外键。这是生成的DDL:

create table user_interests
(
    user_id     uuid   not null
        constraint fkfxfdgodf1o1gxd8offdxrhcwu
            references accounts,interest_id bigint not null
        constraint fkdtbf68t9l8ehm46bi6ko45kb5
            references interests
);

问题是,约束之后的神秘字符串是什么?DDL是否正确定义?

解决方法

在兴趣类别中,也要声明“ var account:List”,并具有反向映射!