Spring Roo,Hibernate为主键列生成不必要的外键

时间:2011-03-07 08:38:36

标签: hibernate spring-roo

我刚开始玩mvc,roo和hibernate。我正在使用Oracle XE 10g数据库。

我使用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”FOREIGN KEY(“ID”)参考“TEST”。“OPCINA”(“ID”)ENABLE,

约束,为什么会生成? (我怎么能避免它?)

1 个答案:

答案 0 :(得分:0)

您可能在Roo会话期间意外切换到Entitet。明确目标类:

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

或先切换焦点:

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