休眠:点 foreign_key 到辅助 table

Hibernate: point foreign_key to secondary table

我有三个类:

它具有以下层次结构:

public abstract class PlanItem {...}

public class Task extends PlanItem {...}

public class HumanTask extends Task {...}

我正在使用休眠生成两个 tables: "PlanItem" 及其所有属性 "Task" 及其子项的所有属性。

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class PlanItem {...}

@Entity
@SecondaryTable( name = "Task" )
public class Task extends PlanItem {
    @ElementCollection
    private Set<String> properties;

}

@Entity
@SecondaryTable( name = "Task" )
public class HumanTask extends Task {...}

Hibernate 将为属性创建额外的 table,但 foreign_key 将指向 到 "PlanItem" table。如何让 foreign_key 指向 "Task" table?

您可以尝试将其映射为 @ForeignKey

@ElementCollection
@CollectionTable(
  name = "task_properties",
  joinColumns = {
    @JoinColumn(
      name = "task_id"
    )
  },
  foreignKey = @ForeignKey(
    foreignKeyDefinition = "FOREIGN KEY (task_id) REFERENCES Task"
  )
)
private Set<String> properties;

您可能需要最新的休眠版本,因为我认为能够始终如一地指定外键只在 5.0 by HHH-9709 and fully only in 5.2 by HHH-11180.

中得到了部分修复