This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 187498 - Create Entity From Database Wizard does not work properly
Summary: Create Entity From Database Wizard does not work properly
Status: RESOLVED INCOMPLETE
Alias: None
Product: db
Classification: Unclassified
Component: DB schema (show other bugs)
Version: 6.x
Hardware: All All
: P2 normal (vote)
Assignee: Jiri Rechtacek
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-11 21:35 UTC by gpatanel
Modified: 2010-06-21 07:21 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description gpatanel 2010-06-11 21:35:28 UTC
Product Version = NetBeans IDE 6.9 RC2 (Build 201005312001)
Operating System = Windows 7 version 6.1 running on x86
Java; VM; Vendor = 1.6.0_17
Runtime = Java HotSpot(TM) Client VM 14.3-b01


The wizard (Create Entity From Database) is not working properly. 

Consider this data model ( MYSQL )  that has 3 tables. The parent table is named LIB, which has 2 child tables LIB_NODE and LIB_SCOPE

CREATE  TABLE  `XXX`.`LIB` (
  `LIB_ID` CHAR(32) NOT NULL ,
  `OBJ_ID` CHAR(32) NOT NULL ,
  PRIMARY KEY (`LIB_ID`) ,
  INDEX `FK_LIB_OBJ_ID` (`OBJ_ID` ASC) ,
  CONSTRAINT `FK_LIB_OBJ_ID`
    FOREIGN KEY (`OBJ_ID` )
    REFERENCES `XXX`.`OBJ` (`OBJ_ID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB


CREATE  TABLE  `XXX`.`LIB_NODE` (
  `LIB_NODE_ID` CHAR(32) NOT NULL ,
  `LIB_ID` CHAR(32) NOT NULL ,
  `PARENT_LIB_NODE_ID` CHAR(32) NULL ,
  `LABEL` VARCHAR(40) NOT NULL ,
  `STATUS` VARCHAR(1) NOT NULL ,
  `CREATED_BY` CHAR(32) NOT NULL ,
  `MODIFIED_BY` CHAR(32) NOT NULL ,
  `DTTM_CREATED` TIMESTAMP NOT NULL ,
  `DTTM_MODIFIED` TIMESTAMP NOT NULL ,
  PRIMARY KEY (`LIB_NODE_ID`) ,
  INDEX `FK_LIB_NODE_LIB_ID` (`LIB_ID` ASC) ,
  INDEX `FK_LIB_NODE_PARENT_LIB_NODE_ID` (`PARENT_LIB_NODE_ID` ASC) ,
  CONSTRAINT `FK_LIB_NODE_LIB_ID`
    FOREIGN KEY (`LIB_ID` )
    REFERENCES `XXX`.`LIB` (`LIB_ID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `FK_LIB_NODE_PARENT_LIB_NODE_ID`
    FOREIGN KEY (`PARENT_LIB_NODE_ID` )
    REFERENCES `XXX`.`LIB` (`LIB_ID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE  TABLE  `XXX`.`LIB_SCOPE` (
  `LIB_SCOPE_ID` CHAR(32) NOT NULL ,
  `LIB_ID` CHAR(32) NOT NULL ,
  `OBJ_TYPE_ID` CHAR(32) NOT NULL ,
  `USE_FLAG` VARCHAR(1) NOT NULL ,
  `CREATE_FLAG` VARCHAR(1) NOT NULL ,
  `STATUS` VARCHAR(1) NOT NULL ,
  `CREATED_BY` CHAR(32) NOT NULL ,
  `MODIFIED_BY` CHAR(32) NOT NULL ,
  `DTTM_CREATED` TIMESTAMP NOT NULL ,
  `DTTM_MODIFIED` TIMESTAMP NOT NULL ,
  PRIMARY KEY (`LIB_SCOPE_ID`) ,
  INDEX `FK_LIB_SCOPE_LIB_ID` (`LIB_ID` ASC) ,
  INDEX `FK_LIB_SCOPE_OBJ_TYPE_ID` (`OBJ_TYPE_ID` ASC) ,
  CONSTRAINT `FK_LIB_SCOPE_LIB_ID`
    FOREIGN KEY (`LIB_ID` )
    REFERENCES `XXX`.`LIB` (`LIB_ID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `FK_LIB_SCOPE_OBJ_TYPE_ID`
    FOREIGN KEY (`OBJ_TYPE_ID` )
    REFERENCES `XXX`.`OBJ_TYPE` (`OBJ_TYPE_ID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB


 For instance, for LIB, here are two issues:

a) missing foreign key reppresentaiton in the model ( LIB.OBJ_ID is missing ) 
b) duplicate child collection reppresentation for LibNode : see libNodeCollection and libNodeCollection1

MODEL = Lib ( table LIB )

    @Id
    @Basic(optional = false)
    @Column(name = "LIB_ID")
    private String libId;
   <===  here it is missing the objID ( OBJ_ID ) column reference, which is a foreign key
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "lib")
    private Collection<LibScope> libScopeCollection;
    @OneToMany(mappedBy = "lib")
    private Collection<LibNode> libNodeCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "lib1")
    private Collection<LibNode> libNodeCollection1;                    <== there is only one child table ( LIB_NODE ) therefore this is duplicate
Comment 1 gpatanel 2010-06-12 09:15:19 UTC
The main issue that needs attention as a priory is the fact that the column OBJ_ID and its foreign reference is not mapped in the entity by the wizard:


CREATE  TABLE  `XXX`.`LIB` (
  `LIB_ID` CHAR(32) NOT NULL ,
  `OBJ_ID` CHAR(32) NOT NULL ,    <<===  this column will not be reppresented in the entity, somehow
  PRIMARY KEY (`LIB_ID`) ,
  INDEX `FK_LIB_OBJ_ID` (`OBJ_ID` ASC) ,
  CONSTRAINT `FK_LIB_OBJ_ID`
    FOREIGN KEY (`OBJ_ID` )           <<==== also not reppresented
    REFERENCES `XXX`.`OBJ` (`OBJ_ID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
Comment 2 Sergey Petrov 2010-06-18 15:09:47 UTC
I'm not sure what is wrong, but I can't create tables from script above, got Error code 1005, SQL state HY000: Can't create table 'XXX.LIB' (errno: 150)
can create only without innodb, but it may affect foreign keys rules.
Also as I create tables without innodb usage and then generate schema, I got no foreign keys in schema also. Either something is wrong with sql command or the issue is in schema generation.
Is it working sql script, have you tried?
Comment 3 Sergey Petrov 2010-06-21 07:21:52 UTC
please reopen with more details.
as it's probably schema capturing issue, move to db-schema