2011-03-07 45 views
1

我是新來的spring mvc,roo和hibernate。我正在使用Oracle XE 10g數據庫。Spring Roo,Hibernate爲主鍵列生成不必要的外鍵

我已經使用Roo創建了新的實體。

entity --class Opcina 
field string --fieldName Naziv 
field reference --fieldName Entitet --type ~.domain.Entitet 

生成的Java類是波紋管:

import org.springframework.roo.addon.entity.RooEntity; 
import org.springframework.roo.addon.javabean.RooJavaBean; 
import org.springframework.roo.addon.tostring.RooToString; 
import randb.domain.Entitet; 
import javax.persistence.ManyToOne; 

@RooJavaBean 
@RooToString 
@RooEntity 
public class Opcina { 

    private String Naziv; 

    @ManyToOne 
    private Entitet Entitet; 
} 

生成的表是這樣的:

CREATE TABLE "TEST"."OPCINA" 
    (
    "ID"  NUMBER(19,0) NOT NULL ENABLE, 
    "NAZIV" VARCHAR2(255 BYTE), 
    "VERSION" NUMBER(10,0), 
    "ENTITET" NUMBER(19,0), 
    PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE, 
    CONSTRAINT "FKC3C2CDFACAB9A04E" FOREIGN KEY ("ID") REFERENCES "TEST"."OPCINA" ("ID") ENABLE, 
    CONSTRAINT "FKC3C2CDFA1A1F0EF1" FOREIGN KEY ("ENTITET") REFERENCES "TEST"."ENTITET" ("ID") ENABLE 
); 

什麼是

約束 「FKC3C2CDFACAB9A04E」 外鍵(目的」 ID「)參考」測試「。」OPCINA「(」ID「)ENABLE,

約束,爲什麼產生? (我該如何避免它?)

+0

此行爲無關的百畝或Spring MVC的,它不僅關係到JPA /休眠。 – Ralph 2011-03-07 12:02:29

回答

0

在Roo會話期間,您可能會意外切換到Entitet。要明確目標類:

field reference --fieldName Entitet --type ~.domain.Entitet --class ~.domain.Opcina 

或交換機的重點第一:

focus --class ~.domain.Opcina 
field reference --fieldName Entitet --type ~.domain.Entitet 
+0

因爲我不再使用Sprig Roo(切換到PHP/Yii),我要標記你的答案是正確的 – Emir 2012-07-23 08:02:56