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

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

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

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

hibernate 4.3.7

最佳答案

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

关于java - 如何强制在 @Entity 和 @ElementCollection 之间生成外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28553648/

相关文章:

java - 选择要在 RESTful Web 服务中发布的属性

java - Android 倒计时计时器

java - 添加新对象并生成新字段 ID

java - 为什么 System.getProperty 不从 Windows 中的系统变量返回值

关于更新当前时间戳的 Mysql 5.6 列在 hibernate 中不起作用

jpa - 无法在事务 : enlistResource returns 'false' 中登记连接

java - 我如何使用java在SQL中划分两列?

java - 禁用上下文 LOB 创建作为 createClob() 方法引发错误

java - org.hibernate.AnnotationException : Use of @OneToMany or @ManyToMany targeting an unmapped class: core. user.User.userRole[core.user.UserRole]

java - hibernate : MySQLSyntaxErrorException: Unknown column ' ____ ' in 'field list'