Home Artykuły Java Eclipse 3.5+JPA+Dali plugin+Postgres problem z wielkością liter w nazwach tabiel

Eclipse 3.5+JPA+Dali plugin+Postgres problem z wielkością liter w nazwach tabiel

Eclipse 3.5+JPA+Dali plugin+Postgres problem z wielkością liter w nazwach tabiel

      Podczas ostatniej pracy z Eclipse w wersji 3.5  oraz pluginem Dali jako narzedziem do JPA napotkałem się nieoczekiwanie na dziwny błąd, który zepsuł mi nastój na całą dobę.  Ostatnio miałem same pozytywne wrażenia z połączenia technologii : Windows Mobile -> SOAP -> JAX-WS -> EJB3 ->JPA -> Baza danych. Jednak, tym razem, doznałem bolesnej porażki.  Chciałem nazwać tabele w bazie danych  tak samo jak encje czyli "Contact" . Mimo poprawnie zdefiniowanej klasy encji, project JPA nie chciał przejść walidacji. Oto fragment komunikatu blędu, który przeczytałem w widoku "Problems" Eclipsa : "Table "Contact" cannot be resolved    Contact.java ...."

 

dali01

Tym bardziej bylem zdziwiony, że nie było podpowiedzi w autouzupiełnianiu nazwy tabeli pluginu Dali. Rozwiązanie znalazlem dopiero następnego dnia wpisując do google zapytanie "eclipse dali plugin and case character in the table's name" . Znalazłem ciekawy artykuł "Reverse Engineer JPA Entities with Eclipse 3.3 and MySQL", a konkretnie ciekawe zdanie w nim:

Something that gave me a hard time is that for some funky reason the table names must be all in lower case. If tables names are in mixed case the relationships will not be discovered during the reverse engineering process. During my experimentation I discovered that the Middlegen docs give a warning about this, so I am guessing that the Eclipse DALI plugin uses Middlegen under the covers. The MySQL engine should also be INNODB.

Do tej pory ja stosowałem w nazwach tabel wylącznie małe litery. Wczoraj postanowiłem zerwać z tą zaszłością hystoryczną i nazywać tabele zgodnie z konwencją nazewnictwa klas firmy SUN n.p. ContactItem. No może nie tak od razu, bo mój ulubiony plugin Dali w wersji wersji 2.2.1 jeszcze nie potrafi prawidłowo działać w przypadku mieszanej wiełkości w nazwach tabel oraz jeśli nazwa złożona jest wyłącznie z dużych liter. Po przemianowaniu tabeli "Contact" w "contact" wszystko już bylo OK. Ale trzeba było jeszcze zmienić nazwe dla sekwencji z "Contact_id_seq"  na "contact_id_seq", żeby nie używać adnotacji @SequenceGenerator