2012-12-22 45 views
0

在我的Hibernate的註解基於應用程序......我在創建表這樣的..如何在基於Annotation的Hibernate的相同表中將主鍵作爲外鍵?

CREATE TABLE IF NOT EXISTS `EC_USER` (
    `S_ID` VARCHAR(30) NOT NULL PRIMARY KEY, 
`CREATED_DATE` DATETIME NULL , 
`MODIFIED_BY` VARCHAR(30) NULL , 
CONSTRAINT `CREATED_BY` 
    FOREIGN KEY (`CREATED_BY`) 
    REFERENCES `EC_USER` (`S_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `MODIFIED_BY` 
    FOREIGN KEY (`MODIFIED_BY`) 
    REFERENCES `EC_USER` (`S_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 

那麼如何寫我的Hibernate豆...

@Entity 
@Table(name = "EC_USER") 
public class UserVO{ 
@Id 
@Column(name="S_ID") 
private String id; 
@Column(name = "CREATED_DATE") 
private Date createdDate; 
@Column(name = "LAST_MODIFIED_DATE") 
private Date modifiedDate; 
} 

因此,這是正確的或任何關係映射所需...

+0

您在哪裏創建了上面在約束定義中引用的CREATED_BY和MODIFIED_BY列。 – ams

回答

2

假設有一個CREATED_BY和MODIFIED_BY列你可以寫

@Entity 
@Table(name = "EC_USER") 
public class UserVO{ 
@Id 
@Column(name="S_ID") 
private String id; 
@Column(name = "CREATED_DATE") 
private Date createdDate; 
@Column(name = "LAST_MODIFIED_DATE") 
private Date modifiedDate; 

@ManyToOne 
@JoinColumn(name="created_by") 
private UserVO createdBy; 


@ManyToOne 
@JoinColumn(name="modified_by") 
private UserVO modifiedBy; 

} 
+0

它應該是一個ManyToOne,因爲許多用戶當然可以由其他用戶創建或修改。 –

+0

如果一對一關係需要映射.. –

+0

在創建Json節點時,它將進入循環獲取(UserVo獲取createdBy,然後createdBy再次獲取UserVo),這會導致StackOverFlow。我也做了fetchType也渴望。但我認爲它沒用。你知道如何處理它嗎? –