Info-System

Seam-gen nie tworzy relacji z mysql

Email Drukuj PDF

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"

 Seam-gen problem in Eclipse

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

Dodaj komentarz


Kod antysapmowy
Odśwież

Joomlart