Enum, BasicType and List of basiType : DDL problem...

54 views
Skip to first unread message

onclez...@gmail.com

unread,
May 31, 2016, 12:18:47 PM5/31/16
to Sculptor Generator
Hi everybody !
Let's me explain :
Suppose this simple model :

BasicType MyPersonName {
   
String firstName;
   
String lastName;
}

Entity MyPerson {
   
Set<String> nicknames
}

Entity Spy extends MyPerson {
   
- Set<@MyPersonName> aliases
}

Everything ok :
Here the DDL

CREATE TABLE MYPERSON (
    ID BIGINT NOT NULL
,
    NICKNAMES VARCHAR
(100) NOT NULL,
    UUID VARCHAR
(36) NOT NULL,
    CREATEDDATE TIMESTAMP
,
    CREATEDBY VARCHAR
(50),
    LASTUPDATED TIMESTAMP
,
    LASTUPDATEDBY VARCHAR
(50),
    VERSION BIGINT NOT NULL
);

CREATE TABLE SPY
(
    MYPERSON BIGINT NOT NULL
);

-- Create many to many relations
CREATE TABLE ALIASE_SPY
(
    ALIASE_FIRSTNAME VARCHAR
(100) NOT NULL,
    ALIASE_LASTNAME VARCHAR
(100) NOT NULL,
    SPY BIGINT NOT NULL
);

ALTER TABLE ALIASE_SPY ADD CONSTRAINT PK_ALIASE_SPY
    PRIMARY KEY
(ALIASE, SPY);

-- Reference from ALIASE_SPY.spy to Spy
ALTER TABLE ALIASE_SPY ADD CONSTRAINT FK_ALIASE_SPY_SPY
    FOREIGN KEY
(SPY) REFERENCES MYPERSON (ID);
CREATE INDEX IX_ALIASE_SPY_SPY ON ALIASE_SPY
(SPY);

Now suppose this model :

enum MyEnum1 {
    attr1
, attr2
}

enum MyEnum2 {
    attr1
, attr2
}

BasicType MyPersonName {
   
- @MyEnum1 firstName;
   
- @MyEnum2 lastName;
}

Entity MyPerson {
   
Set<String> nicknames
}

Entity Spy extends MyPerson {
   
- Set<@MyPersonName> aliases
}

The DDL :

CREATE TABLE MYPERSON (
    ID BIGINT NOT NULL
,
    NICKNAMES VARCHAR
(100) NOT NULL,
    UUID VARCHAR
(36) NOT NULL,
    CREATEDDATE TIMESTAMP
,
    CREATEDBY VARCHAR
(50),
    LASTUPDATED TIMESTAMP
,
    LASTUPDATEDBY VARCHAR
(50),
    VERSION BIGINT NOT NULL
);

CREATE TABLE SPY
(
    MYPERSON BIGINT NOT NULL
);

-- Create many to many relations
CREATE TABLE ALIASE_SPY
(
   
,
    SPY BIGINT NOT NULL
);

ALTER TABLE ALIASE_SPY ADD CONSTRAINT PK_ALIASE_SPY
    PRIMARY KEY
(ALIASE, SPY);

-- Entity Spy extends MyPerson
ALTER TABLE SPY ADD CONSTRAINT FK_SPY_MYPERSON
    FOREIGN KEY
(MYPERSON) REFERENCES MYPERSON (ID);
CREATE INDEX IX_SPY_MYPERSON ON SPY
(MYPERSON);

The collection table ALIASE_SPY is not generated properly !
I using Postgre, so i supposed the problem is in the OracleDDLTmpl.xtend. But...
Any ideas ??

Regards

oncl...@gmail.com

unread,
Jun 3, 2016, 4:31:51 AM6/3/16
to Sculptor Generator
Hi !

Really no ideas ??!!

oncl...@gmail.com

unread,
Jun 3, 2016, 8:11:09 AM6/3/16
to Sculptor Generator
Hi,

I forgot to said that in both case the line :
ALTER TABLE ALIASE_SPY ADD CONSTRAINT PK_ALIASE_SPY
    PRIMARY KEY
(ALIASE, SPY);


is seems to be wrong : the column ALIAS should be replace by
ALIASE_FIRSTNAME
The attribut of the basic name is not concatenated...

Any ideas ??
Regards

Le mardi 31 mai 2016 18:18:47 UTC+2, onclez...@gmail.com a écrit :

onclez...@gmail.com

unread,
Jun 10, 2016, 10:19:44 AM6/10/16
to Sculptor Generator
Hi everyboby !

I resolve my problem concerning the tables but not the constraints !!
With :

BasicType MyPersonName {
   
String firstName;
   
String lastName;
}

Entity MyPerson {

    reference
List<@MyPersonName> name
}


the DDL generated is

CREATE TABLE MYPERSON (
    ID BIGINT NOT NULL
,

    UUID VARCHAR
(36) NOT NULL,
    CREATEDDATE TIMESTAMP
,
    CREATEDBY VARCHAR
(50),
    LASTUPDATED TIMESTAMP
,
    LASTUPDATEDBY VARCHAR
(50),
    VERSION BIGINT NOT NULL
);

-- Create many to many relations
CREATE TABLE MYPERSON_NAME
(
    NAME_FIRSTNAME VARCHAR
(100) NOT NULL,
    NAME_LASTNAME VARCHAR
(100) NOT NULL,

    MYPERSON BIGINT NOT NULL
);


ALTER TABLE MYPERSON ADD CONSTRAINT PK_MYPERSON
    PRIMARY KEY
(ID);
ALTER TABLE MYPERSON_NAME ADD CONSTRAINT PK_MYPERSON_NAME
    PRIMARY KEY
(NAME, MYPERSON);
ALTER TABLE MYPERSON
    ADD CONSTRAINT UQ_MYPERSON UNIQUE
(UUID);
-- Reference from MYPERSON_NAME.myPerson to MyPerson
ALTER TABLE MYPERSON_NAME ADD CONSTRAINT FK_MYPERSON_NAME_MYPERSON
    FOREIGN KEY
(MYPERSON) REFERENCES MYPERSON (ID);
CREATE INDEX IX_MYPERSON_NAME_MYPERSON ON MYPERSON_NAME
(MYPERSON);

My question is : is it normal that Sculptor try to "Create many to many relations" between a Entity and a BasicType?

Instead

ALTER TABLE MYPERSON_NAME ADD CONSTRAINT PK_MYPERSON_NAME
    PRIMARY KEY
(NAME, MYPERSON);


I expect :

ALTER TABLE MYPERSON_NAME ADD CONSTRAINT PK_MYPERSON_NAME
    PRIMARY KEY
(MYPERSON);

Am i wrong ??
The java class is well generated with @ElementCollection() :

@ElementCollection()
@NotNull
private List<MyPersonName> name = new ArrayList<MyPersonName>();



Regards


Le mardi 31 mai 2016 18:18:47 UTC+2, onclez...@gmail.com a écrit :

onclez...@gmail.com

unread,
Jun 15, 2016, 5:15:52 PM6/15/16
to Sculptor Generator
Hi,

Finally, i used a ValueObject intead of a BasicType...
But I'm frustrated to not anderstand why my simple model not generated the good constraint (or i am wrong, perhapes...)
It seams that the generator use its many2many part instead of one2many...

Bye !!


Le mardi 31 mai 2016 18:18:47 UTC+2, onclez...@gmail.com a écrit :
Reply all
Reply to author
Forward
0 new messages