2011-03-07 43 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