w mojej aplikacji, używam hibernacji z bazy danych SQL Server, więc mogę ustawićJak zdobyć hibernacji dialekt podczas wykonywania
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect">
w moim persistence.xml.
W niektórych przypadkach chcę posortować rekordy z wartością NULL, używam słowa kluczowego NULLS FIRST.
Ponieważ nie jest obsługiwana domyślnie przez CriteriaQuery/CriteriaBuilder w Hibernate, używam Interceptora do modyfikowania zapytania natywnego.
Problem polega na tym, null słów kluczowych PIERWSZA nie jest obsługiwane w SQL Server, więc używam słowa kluczowego:
case when column_name is null then 0 else 1 end, column_name
Jeśli chcę przenieść bazę danych z serwera SQL Oracle (na przykład), to muszę się położyć, jeśli -zespól w moim Interceptorze, wybierając który dialekt używam, prawda?
To jak ja zilustrować je:
String dialect = ..............
if (dialect.equals("org.hibernate.dialect.SQLServerDialect")) { // get SQL Server dialect
// put keyword "case when column_name is null then 0 else 1 end, column_name"
} else {
// put keyword "NULLS FIRST/LAST"
}
Jak mogę uzyskać konfigurację dialekt (w persistence.xml) w czasie wykonywania?
inny link o wartości null pierwszego słowa kluczowego: https://hibernate.atlassian.net/browse/HHH-465 – danisupr4
używam Interceptor na podstawie tego artykułu: http://stackoverflow.com/questions/3683174/hibernate- order-by-with-nulls-last – danisupr4
Te linki mogą pomóc ci uzyskać informacje dialektu od SessionFactory; [link1] (http://stackoverflow.com/questions/1571928/retrieve-auto-detected-hibernate-dialect) i [link2] (http://stackoverflow.com/questions/8742617/resolve-sql-dialect-using -hibernate) –