In my application, I use Hibernate with a SQL Server database, so I installed
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect">
in my persistence.xml.
In some cases, I want to sort records with NULL enabled, I use the NULLS FIRST keyword.
Since it is not supported by default CriteriaQuery / CriteriaBuilder in Hibernate, I use Interceptor to modify my own query.
The problem is that the NULLS FIRST keyword is not supported in SQL Server, so I use the keyword:
case when column_name is null then 0 else 1 end, column_name
If I want to transfer the database from SQL Server to Oracle (for example), then I need to put if-else in my Interceptor, choosing the dialect that I use, right?
Here is how I illustrate them:
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" }
How can I get the dialect configuration (in persistence.xml) at runtime?
source share