休眠:点 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.
中得到了部分修复
我有三个类:
- 计划项目
- 任务
- 人类任务
它具有以下层次结构:
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.
中得到了部分修复