2011-01-27 9 views
11

Teraz używam tabel InnoDB, ale co mnie myli, co jeśli używam więcej niż jednego silnika w DB?Co najlepiej jest używać Hibernate 3.5.1 Dialect, aby uzyskać dostęp do MySQL 5.1

Ponieważ użyłem "najlepszego" w tytule, ostrzega, że ​​pytanie jest subiektywne, ale biorąc pod uwagę bardzo skończoną liczbę Dialektów i że nie rozumiem czynników dyskryminujących między nimi (co jest najlepsze jest) I trzeba to wyjaśnić w odpowiedzi.

Dla odniesienia tutaj są dialekty mowa znalezione pod org.hibernate.dialect:

  • MySQL5Dialect
  • MySQL5InnoDBDialect
  • MySQLDialect
  • MySQLInnoDBDialect
  • MySQLMyISAMDialect

Odpowiedz

13

MySQL InnoDB wymusza integralność referencyjną; ISAM tego nie robi.

Wersja MySQL 5 różni się od wcześniejszych wersji.

MySQLDialect jest prawdopodobnie wersją starszą od pierwszej implementacji Hibernate, gdy nie było takiego wyboru.

Wybierz ten, który najlepiej pasuje do Twojej wersji MySQL (wersja 5 z twojego pytania) i implementację, której użyłeś do utworzenia bazy danych MySQL.

+0

W porządku, wydaje się bardzo proste. Zostałem poproszony o zapytanie po zapytaniu o kryteria jpa2: "javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query", jeśli używam MySQL5Dialect, MySQLDialect lub MySQL5InnoDBDialect ... Będzie to temat innego pytania. – Quaternion

+0

Czy powinieneś zapytać o InnoDB podczas tworzenia tabel MySQL? – duffymo

+0

Tak, to był głupi problem z nazwaniem kolumny zastrzeżonym słowem "grupa". Zauważyłem, że problem mógł zostać rozwiązany, gdybym albo zmienił nazwę adnotacji nazwy kolumny z "grupy" na "grupę", ale obawiałem się, że może to spowodować problem, więc zmieniłem nazwę kolumny i zregenerowałem encję. – Quaternion

Powiązane problemy