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

时间:2015-02-17 02:19:33

标签: java hibernate jpa

这是我的代码:

@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中生成外键。

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

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

Hibernate 4.3.7

1 个答案:

答案 0 :(得分:1)

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