2013-02-18 10 views
12

Mam do czynienia z dotychczasowym systemem napisanym do pracy z MySQL 5.0, a teraz muszę go przenieść do MysQL 5.5 (wymaganie). Zauważyłem, że jedna kolumna została nazwana maxvalue, co wydaje się być słowem systemowym w MySQL 5.5. Tak więc wszystkie moje pytania Hibernate, które zawierają tę kolumnę dać błąd składni:Wykonaj wsteczną wstecz wszystkie nazwy tabeli/kolumny

Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'maxvalue

Wydaje się, że Hibernacja nie automatycznie, ale małe cudzysłowy `wokół nazwy pola. Jeśli wyodrębnię zapytanie, wsteczna wartość `maxvalue \ działa poprawnie w MySQL 5.5.

Znalazłem solution jak wyraźnie wymusić cytaty z ty? U dla konkretnego pola/tabeli. Chodzi o to, że nie jestem pewien, jak wiele innych nazw kolumn wywoła taki problem. Czy istnieje sposób powiadomienia Hibernate, aby automatycznie odtworzył wstecz wszystkie nazwy tabel/kolumn? (który da prawidłowy SQL i nie wiem, dlaczego nie robi tego domyślnie dla MySQL).

EDYTUJ: This discussion prawie sprawia, że ​​wierzę, że to, czego chcę, nie jest możliwe.

+0

Ponieważ Hibernate jest projektem open source .... :) – StarPinkER

+0

@JermaineXu Tak i wszyscy mamy czas przestać cokolwiek jesteśmy rzeczywiście działa aby nauczyć się i naprawić kod kogoś innego ... – Basic

Odpowiedz

30

Jest non-documented nieruchomość do tego celu:

<property name="hibernate.globally_quoted_identifiers" value="true"/> 
+0

Idealny! Dzięki! Ta właściwość jest przynajmniej udokumentowana. Z przykrością uruchamiam program hibernate 3.3 i wygląda na to, że właściwość ta została wprowadzona w wersji 3.5. Nie będę w stanie zweryfikować, czy ta właściwość działa, ale zaznaczam twoją odpowiedź jako zaakceptowaną. –

+1

dla osób korzystających ze Spring: pakiet application.properties to: 'spring.jpa.properties.hibernate.globally_quoted_identifiers = true' – pvgoddijn

+0

"Nie ma czegoś takiego jak nieudokumentowana funkcja .Jeśli użytkownicy nie wiedzą o funkcji, jej niezwiązane, pozbądź się tego, to tylko komplikuje kod źródłowy. " - https://developer.jboss.org/wiki/WhyThisProjectIsScesces –