2013-07-29 33 views
1

嘗試使用JPA實體實施物料清單概念: -
IDE:Eclipse Helios;
罐:eclipselink2.4.0,javax.persistence 實體如下:JPA實體在實施物料清單概念時發生錯誤

@Id 
@TableGenerator(name = "Config_Key_Incrementor", table = "id_generator", pkColumnName = "gen_name", valueColumnName = "gen_value", pkColumnValue = "conifg_id_gen", allocationSize = 1, initialValue = 1) 
@GeneratedValue(strategy = TABLE, generator = "Config_Key_Incrementor") 
@Column(name = "config_id") 
private int configId; 

@Column(name = "config_name") 
private String configName; 

//bi-directional many-to-one association to Bill_Of_Material 
@ManyToOne 
@PrimaryKeyJoinColumn(name="config_id") 
private Configuration parent; 

//bi-directional many-to-one association to Bill_Of_Material 
@OneToMany(mappedBy="parent") 
private List<Configuration> children = new ArrayList<Configuration>(); 

public Configuration getParent() { 
    return parent; 
} 

public void setParent(Configuration parent) { 
    this.parent = parent; 
} 



public List<Configuration> getChildren() { 
    return children; 
} 

public void setChildren(List<Configuration> children) { 
    this.children = children; 
} 

public int getConfigId() { 
    return configId; 
} 

public void setConfigId(int configId) { 
    this.configId = configId; 
} 

public String getConfigName() { 
    return configName; 
} 

public void setConfigName(String configName) { 
    this.configName = configName; 
} 

輸出:

CREATE TABLE configuration  
    ( 
    config_id integer NOT NULL, 
    config_name character varying(255),  
    CONSTRAINT configuration_pkey PRIMARY KEY (config_id), 
    CONSTRAINT fk_configuration_config_id FOREIGN KEY (config_id) 
     REFERENCES configuration (config_id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
) 

錯誤: 是越來越創建的表,但該列parent_config_id缺失並且與config_id的關係也丟失。

回答

0

您正在使用@PrimaryKeyJoinColumn(name =「config_id」),它表示主鍵也是引用的配置父項的外鍵 - 因此它是它自己的父項。您想使用@JoinColumn來定義外鍵,或者將其留空以使其使用默認值。

@ManyToOne 
@JoinColumn(name="parent_config_id", referencedColumnName="config_id") 
private Configuration parent; 
+0

感謝您的快速響應。建議的解決方案完美運作。 但是我發佈的相同代碼在IDE環境與eclipselink和javax.persistence jar版本相同的eclipse juno上工作。我無法弄清楚爲什麼當我嘗試在helios中運行時它的行爲不同。謝謝 – adihere