Seam-gen wywoływany z Eclipse nie mógł poradzić sobie z prostym schematem bazy danych MySql. Oto możlwia przyczyna problemu
Wprowadź wszystkie potrzebne dane
Przy okazji pisania artykułu natknąłem sie na problem z seam-gen. Oto skrypt bazy danych jaki stworzyłem:
DROP DATABASE IF EXISTS smartGwt;
CREATE DATABASE smartGwt DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_polish_ci;
USE smartGwt;
GRANT ALL ON smartGwt TO `smartGwt` IDENTIFIED BY 'smartGwt';
GRANT ALL PRIVILEGES ON *.* TO 'smartGwt'@'%' IDENTIFIED BY 'smartGwt' WITH GRANT OPTION;
FLUSH PRIVILEGES;
CREATE TABLE invoice (
id BIGINT AUTO_INCREMENT NOT NULL ,
contractor_name VARCHAR( 100 ) NOT NULL,
issue_date DATE NOT NULL,
contractor_tax_number BIGINT NOT NULL,
CONSTRAINT pk_ids PRIMARY KEY(id)) engine=InnoDB;
CREATE TABLE invoic_epostion (
id BIGINT AUTO_INCREMENT NOT NULL ,
invoice_id BIGINT NOT NULL,
name VARCHAR( 100 ) NOT NULL,
price DOUBLE NOT NULL,
CONSTRAINT PK_ID PRIMARY KEY ( id ),
CONSTRAINT fk_invoice FOREIGN KEY ( invoice_id ) REFERENCES invoice ( id )) engine=InnoDB;UWAGA! Nie wszystkie przeglądarki obsługują kompresję! Te przeglądarki, z którym kompatybilne jest GWT, obsługują kompresję.
Seam-gen cały czas generował mi typy proste zamiast kluczy obcych. Zamiast metod getInvoice() dostawałem getInvoiceId(). Dość irytująca sprawa. Zwłaszcza, że seam-gen'a używałem nie pierwszy raz.
Okazało się, że przez przypadek nie wypełniłem dwóch istotnych pól. Myślałem, że wszystkie wymagane informacje są możliwe do zaczerpnięcia z URL'a bazy danych, które podaje się w oknie "New Connection Profile"

Pola "Database schema name" i "Database catalog name" muszą być wypełnione. W moim przypadku było to dwókrotne wpisanie "smartGwt".
Inna przyczyna
Seam-gen podczas generacji schematu mysql'owego opiera się na silniku "innoDB", pozwala on driver'owi JDBC pozyskać informacje o schemacie między innymi o kluczach obcych.
Źródła
Tutaj znajdziesz informacje dotyczące tego zadanienia
http://seamframework.org/12697.lace
http://dev.mysql.com/doc/refman/5.0/en/innodb-storage-engine.html




