Zdravím!

Se stejným problémem jsem se setkal také.
Generování tabulek je prostě nedokonalé. Některé constrainty se
nevygenerují vůbec.

Pokud například chcete unidirectional vztah OneToMany, tak se
nevygeneruje unikátní klíč ve spojovací tabulce.
A vůbec generování primárních klíčů ve spojovacích tabulkách je také chybné.

Řeším to tak, že si jednou nechám vygenerovat schéma, pak provedu dump z
DB a ručně upravím všechny vztahy.
Při dalším deploy již nenechávám generovat schémata.

Navíc to má výhodu v tom, že mám připravené sql skripty, které mi naplní DB.
Další výhody jsou v tom, že v sql doplníte různé indexy atp.

Fafi

Jiří Mikulášek napsal(a):
> Hezký den, zdá se mi že JPA v určitém případě chybně generuje DDL, což vede k 
> řetězovým chybám a nevytvoření spousty constraintů. Pokud se mýlím opravte mě 
> (kéž bych se mýlil).
> Takže příklad:
> Entita:
>
> @Entity
> public class FieldNotes implements Serializable {
>     @Id
>     @GeneratedValue(strategy = GenerationType.AUTO)
>     private Long id;
>    
>     @ManyToOne(optional=false)
>     @JoinColumn(name="ID_SPECIES",referencedColumnName="ID",nullable=false)
>     private Species species;
>
>     @ManyToOne(optional=false)
>     @JoinColumn(name="ID_LOCALITY",referencedColumnName="ID",nullable=false)
>     private Locality locality;
>
>
> a DDL:
> CREATE TABLE FIELDNOTES (
>       ID BIGINT NOT NULL, DTYPE VARCHAR(31),
>       ID_LOCALITY BIGINT NOT NULL,
>       ID_SPECIES BIGINT NOT NULL,
>       PRIMARY KEY (ID, ID_SPECIES)
> )
>
> No teď mě zajímá, jaktože se ID_SPECIES stalo součástí PK a ID_LOCALITY 
> nikoliv. Samozřejmě správně nemaá být v PK ani jedno. Snažím se na to přijít 
> už dlouho, nakonec jsem si to ve schímatu upravil ručně, což ale není 
> řešením, v případě že někdo bude chtít z mých entit schéma vygenerovat tak se 
> mu to nepodaří, protože všechny vazby na FIELDNOTES podle ID neprojdou.
>
> jako persistence providera používám toplink
>   

Odpovedet emailem