org.hibernate.NullPrecedence Java Examples
The following examples show how to use
org.hibernate.NullPrecedence.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MySQLDialect.java From lams with GNU General Public License v2.0 | 6 votes |
@Override public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nulls) { final StringBuilder orderByElement = new StringBuilder(); if ( nulls != NullPrecedence.NONE ) { // Workaround for NULLS FIRST / LAST support. orderByElement.append( "case when " ).append( expression ).append( " is null then " ); if ( nulls == NullPrecedence.FIRST ) { orderByElement.append( "0 else 1" ); } else { orderByElement.append( "1 else 0" ); } orderByElement.append( " end, " ); } // Nulls precedence has already been handled so passing NONE value. orderByElement.append( super.renderOrderByElement( expression, collation, order, NullPrecedence.NONE ) ); return orderByElement.toString(); }
Example #2
Source File: SQLServer2008Dialect.java From lams with GNU General Public License v2.0 | 6 votes |
@Override public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nulls) { final StringBuilder orderByElement = new StringBuilder(); if ( nulls != null && !NullPrecedence.NONE.equals( nulls ) ) { // Workaround for NULLS FIRST / LAST support. orderByElement.append( "case when " ).append( expression ).append( " is null then " ); if ( NullPrecedence.FIRST.equals( nulls ) ) { orderByElement.append( "0 else 1" ); } else { orderByElement.append( "1 else 0" ); } orderByElement.append( " end, " ); } // Nulls precedence has already been handled so passing NONE value. orderByElement.append( super.renderOrderByElement( expression, collation, order, NullPrecedence.NONE ) ); return orderByElement.toString(); }
Example #3
Source File: DB2Dialect.java From lams with GNU General Public License v2.0 | 5 votes |
/** * Handle DB2 "support" for null precedence... * * @param expression The SQL order expression. In case of {@code @OrderBy} annotation user receives property placeholder * (e.g. attribute name enclosed in '{' and '}' signs). * @param collation Collation string in format {@code collate IDENTIFIER}, or {@code null} * if expression has not been explicitly specified. * @param order Order direction. Possible values: {@code asc}, {@code desc}, or {@code null} * if expression has not been explicitly specified. * @param nullPrecedence Nulls precedence. Default value: {@link NullPrecedence#NONE}. * * @return */ @Override public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nullPrecedence) { if ( nullPrecedence == null || nullPrecedence == NullPrecedence.NONE ) { return super.renderOrderByElement( expression, collation, order, NullPrecedence.NONE ); } // DB2 FTW! A null precedence was explicitly requested, but DB2 "support" for null precedence // is a joke. Basically it supports combos that align with what it does anyway. Here is the // support matrix: // * ASC + NULLS FIRST -> case statement // * ASC + NULLS LAST -> just drop the NULLS LAST from sql fragment // * DESC + NULLS FIRST -> just drop the NULLS FIRST from sql fragment // * DESC + NULLS LAST -> case statement if ( ( nullPrecedence == NullPrecedence.FIRST && "desc".equalsIgnoreCase( order ) ) || ( nullPrecedence == NullPrecedence.LAST && "asc".equalsIgnoreCase( order ) ) ) { // we have one of: // * ASC + NULLS LAST // * DESC + NULLS FIRST // so just drop the null precedence. *NOTE: we could pass along the null precedence here, // but only DB2 9.7 or greater understand it; dropping it is more portable across DB2 versions return super.renderOrderByElement( expression, collation, order, NullPrecedence.NONE ); } return String.format( Locale.ENGLISH, "case when %s is null then %s else %s end, %s %s", expression, nullPrecedence == NullPrecedence.FIRST ? "0" : "1", nullPrecedence == NullPrecedence.FIRST ? "1" : "0", expression, order ); }
Example #4
Source File: Dialect.java From lams with GNU General Public License v2.0 | 5 votes |
/** * Renders an ordering fragment * * @param expression The SQL order expression. In case of {@code @OrderBy} annotation user receives property placeholder * (e.g. attribute name enclosed in '{' and '}' signs). * @param collation Collation string in format {@code collate IDENTIFIER}, or {@code null} * if expression has not been explicitly specified. * @param order Order direction. Possible values: {@code asc}, {@code desc}, or {@code null} * if expression has not been explicitly specified. * @param nulls Nulls precedence. Default value: {@link NullPrecedence#NONE}. * @return Renders single element of {@code ORDER BY} clause. */ public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nulls) { final StringBuilder orderByElement = new StringBuilder( expression ); if ( collation != null ) { orderByElement.append( " " ).append( collation ); } if ( order != null ) { orderByElement.append( " " ).append( order ); } if ( nulls != NullPrecedence.NONE ) { orderByElement.append( " nulls " ).append( nulls.name().toLowerCase( Locale.ROOT ) ); } return orderByElement.toString(); }
Example #5
Source File: OrderByFragmentRenderer.java From lams with GNU General Public License v2.0 | 5 votes |
@Override protected String renderOrderByElement(String expression, String collation, String order, String nulls) { final NullPrecedence nullPrecedence = NullPrecedence.parse( nulls, sessionFactory.getSessionFactoryOptions().getDefaultNullPrecedence() ); return sessionFactory.getDialect().renderOrderByElement( expression, collation, order, nullPrecedence ); }
Example #6
Source File: FooSortingPersistenceIntegrationTest.java From tutorials with MIT License | 5 votes |
@Test public final void whenCriteriaSortingStringNullsFirstDesc_thenNullsFirst() { final Criteria criteria = session.createCriteria(Foo.class, "FOO"); criteria.addOrder(Order.desc("name").nulls(NullPrecedence.FIRST)); final List<Foo> fooList = criteria.list(); assertNull(fooList.get(0).getName()); for (final Foo foo : fooList) { System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); } }
Example #7
Source File: FooSortingPersistenceIntegrationTest.java From tutorials with MIT License | 5 votes |
@Test public final void whenCriteriaSortingStringNullsLastAsc_thenNullsLast() { final Criteria criteria = session.createCriteria(Foo.class, "FOO"); criteria.addOrder(Order.asc("name").nulls(NullPrecedence.LAST)); final List<Foo> fooList = criteria.list(); assertNull(fooList.get(fooList.toArray().length - 1).getName()); for (final Foo foo : fooList) { System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); } }
Example #8
Source File: SqlGenerator.java From lams with GNU General Public License v2.0 | 5 votes |
@Override protected String renderOrderByElement(String expression, String order, String nulls) { final NullPrecedence nullPrecedence = NullPrecedence.parse( nulls, sessionFactory.getSettings() .getDefaultNullPrecedence() ); return sessionFactory.getDialect().renderOrderByElement( expression, null, order, nullPrecedence ); }
Example #9
Source File: AbstractDelegatingSessionFactoryBuilder.java From lams with GNU General Public License v2.0 | 4 votes |
@Override public T applyDefaultNullPrecedence(NullPrecedence nullPrecedence) { delegate.applyDefaultNullPrecedence( nullPrecedence ); return getThis(); }
Example #10
Source File: DelegatingDialect.java From keycloak with Apache License 2.0 | 4 votes |
@Override public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nulls) { return getInstance().renderOrderByElement(expression, collation, order, nulls); }
Example #11
Source File: SessionFactoryBuilderImpl.java From lams with GNU General Public License v2.0 | 4 votes |
@Override public SessionFactoryBuilder applyDefaultNullPrecedence(NullPrecedence nullPrecedence) { this.optionsBuilder.applyDefaultNullPrecedence( nullPrecedence ); return this; }
Example #12
Source File: SessionFactoryOptionsBuilder.java From lams with GNU General Public License v2.0 | 4 votes |
public void applyDefaultNullPrecedence(NullPrecedence nullPrecedence) { this.defaultNullPrecedence = nullPrecedence; }
Example #13
Source File: SessionFactoryOptionsBuilder.java From lams with GNU General Public License v2.0 | 4 votes |
@Override public NullPrecedence getDefaultNullPrecedence() { return defaultNullPrecedence; }
Example #14
Source File: Settings.java From lams with GNU General Public License v2.0 | 4 votes |
public NullPrecedence getDefaultNullPrecedence() { return sessionFactoryOptions.getDefaultNullPrecedence(); }
Example #15
Source File: AbstractDelegatingSessionFactoryOptions.java From lams with GNU General Public License v2.0 | 4 votes |
@Override public NullPrecedence getDefaultNullPrecedence() { return delegate.getDefaultNullPrecedence(); }
Example #16
Source File: SessionFactoryBuilder.java From lams with GNU General Public License v2.0 | 2 votes |
/** * Apply a null precedence (NULLS FIRST, NULLS LAST) to be applied order-by clauses rendered into * SQL queries. * * @param nullPrecedence The default null precedence to use. * * @return {@code this}, for method chaining * * @see org.hibernate.cfg.AvailableSettings#DEFAULT_NULL_ORDERING */ SessionFactoryBuilder applyDefaultNullPrecedence(NullPrecedence nullPrecedence);
Example #17
Source File: Order.java From lams with GNU General Public License v2.0 | 2 votes |
/** * Defines precedence for nulls. * * @param nullPrecedence The null precedence to use * * @return {@code this}, for method chaining */ public Order nulls(NullPrecedence nullPrecedence) { this.nullPrecedence = nullPrecedence; return this; }
Example #18
Source File: SessionFactoryOptions.java From lams with GNU General Public License v2.0 | votes |
NullPrecedence getDefaultNullPrecedence();