[英]Column not generated when using JoinColumn (JPA/Hibernate)
我有以下實體:
@Entity
@IdClass(IntegrationMappingPK.class)
public class IntegrationMapping {
@Id
@ManyToOne
private IntegrationProject project;
@Id
private String mappingName;
...
}
@Entity
public class MappingElement extends FlowElement {
@ManyToOne(cascade=CascadeType.PERSIST)
@PrimaryKeyJoinColumns({
@PrimaryKeyJoinColumn(name="DISCOVERY_ID", referencedColumnName="DISCOVERY_ID"),
@PrimaryKeyJoinColumn(name="SCENARIONAME", referencedColumnName="SCENARIONAME"),
@PrimaryKeyJoinColumn(name="PROJECTNAME", referencedColumnName="PROJECTNAME"),
})
@JoinColumn(name="MAPPINGNAME", referencedColumnName="MAPPINGNAME")
private IntegrationMapping mapping;
...
}
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@IdClass(FlowElementPK.class)
public class FlowElement {
@Id
@ManyToOne
protected IFlow flow;
@Id
@Basic
protected String name;
@Id
@GeneratedValue
private int id;
...
}
IntegrationMapping和FlowElement共享主鍵字段“ DISCOVERY_ID”,“ SCENARIONAME”和“ PROJECTNAME”(本質上是IntegrationProject的PK; IFlow具有由IntegrationProject的PK和名稱組成的主鍵),因此將它們聯接在一起。
我讓Hibernate在啟動時從實體創建表。 這樣做時,FLOWELEMENT表中缺少“ MAPPINGNAME”列。
我也嘗試過使用@PrimaryKeyJoinColumn,這會導致創建該列,但是該變量不是空的。
哪種方法是正確的方法(@JoinColumn或@PrimaryKeyJoinColumn),為什么不創建/填充列?
感謝Prerak Tiwari,我找到了解決方案。 在這種情況下,您根本不會使用@PrimaryKeyJoinColumn,而僅使用@JoinColumn。 所有共享的主鍵字段都必須標記為“ insertable = false,updateable = false”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.