我在使用MySql數據庫的JBOSS服務器上運行的JEE6項目中使用Hibernate作爲我的ORM。 在我的每個Data元素的項目中都會有細節元素。爲此,我創建了一個與共享主鍵的雙向一對一關係,如下所示。在@OnetoOne共享主鍵場景中更改生成的Hibernate外鍵
@Entity
@Table(name="DATA", schema = "TEST")
public class Data implements Serializable {
....
.....
@OneToOne(fetch = FetchType.LAZY, mappedBy = "data", cascade = CascadeType.ALL)
public Details getDetails() {
return details;
....
}
@Entity
@Table(name = "DETAILS", schema = "TEST")
public class Details implements Serializable {
...
...
@GenericGenerator(name = "generator", strategy = "foreign", parameters = { @org.hibernate.annotations.Parameter(name = "property", value = "data") })
@Id
@GeneratedValue(generator = "generator")
@Column(name = "DETAILS_ID", nullable=false)
@Index(name="DETAILS_ID")
@ForeignKey(name = "FK_DATA_ID")
public Long getDetailsId() {
return detailsId;
}
@OneToOne
@PrimaryKeyJoinColumn(name = "DETAILS_ID", referencedColumnName = "DATA_ID")
public Data getData() {
return data;
}
...
}
即使提@ForeignKey它會產生像下面
alter table TEST.DETAILS add constraint FK9FDD7BA22964C454 foreign key (DETAILS_ID) references TEST.DATA
如何創建在這種情況下乾淨的外鍵約束醜陋的外鍵約束後?我需要創建一個名爲'FK_DATA_ID'的外鍵約束。
你的鏈接顯示它是一個JEE7實現。我正在使用JEE6,Hibernate確實爲@ForeignKey提供了一個註釋,並將inverName作爲一個屬性,但即使這樣也行不通。它仍然會產生醜陋的Hibernate Constraint。 – Sabarish
您使用的是哪個版本的hibernate? – Yogesh
我使用JBOSS AS 7.0提供的hibernate 4.0。測試版本 – Sabarish