如何在@Entity 和@ElementCollection 之间强制生成外键?

How to force foreign key generation between an @Entity and a @ElementCollection?

这是我的代码:

@Entity
@Table(name="POSTS")
public class Post {
    @Id
    private Integer id;

    @Column(unique=true, nullable=false)
    private String slug;

    @ElementCollection(fetch = FetchType.LAZY)
    @CollectionTable(
      name = "POSTS_TAGS", 
      joinColumns = { 
          @JoinColumn(name = "POST_SLUG", referencedColumnName = "SLUG")
      }
    )
    private List<String> tags = new ArrayList<>();

}

Hibernate 生成两个表:POSTSPOSTS_TAGS
但是它不会在 POSTS_TAGS.

中生成外键

如果我从 @CollectionTable 注释中删除 joinColumns 属性,它会生成一个带有 id 主键的外键。

如何指示 Hibernate 使用 joinColumns 属性 生成外键?

休眠 4.3.7

不幸的是,您无法指示 Hibernate 生成外键,因为它会尝试自动生成它们。因为它们是在其他上下文中生成的(例如 @ManyToOne 注释或当您省略 @CollectionTable 注释时),我很确定这是一个错误。