/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate;

A problem occurred translating a Hibernate query to SQL due to invalid query syntax, etc.
/** * A problem occurred translating a Hibernate query to SQL due to invalid query syntax, etc. */
public class QueryException extends HibernateException { private final String queryString;
Constructs a QueryException using the specified exception message.
Params:
  • message – A message explaining the exception condition
/** * Constructs a QueryException using the specified exception message. * * @param message A message explaining the exception condition */
public QueryException(String message) { this( message, null, null ); }
Constructs a QueryException using the specified exception message and cause.
Params:
  • message – A message explaining the exception condition
  • cause – The underlying cause
/** * Constructs a QueryException using the specified exception message and cause. * * @param message A message explaining the exception condition * @param cause The underlying cause */
public QueryException(String message, Exception cause) { this( message, null, cause ); }
Constructs a QueryException using the specified exception message and query-string.
Params:
  • message – A message explaining the exception condition
  • queryString – The query being evaluated when the exception occurred
/** * Constructs a QueryException using the specified exception message and query-string. * * @param message A message explaining the exception condition * @param queryString The query being evaluated when the exception occurred */
public QueryException(String message, String queryString) { this( message, queryString, null ); }
Constructs a QueryException using the specified exception message and query-string.
Params:
  • message – A message explaining the exception condition
  • queryString – The query being evaluated when the exception occurred
  • cause – The underlying cause
/** * Constructs a QueryException using the specified exception message and query-string. * * @param message A message explaining the exception condition * @param queryString The query being evaluated when the exception occurred * @param cause The underlying cause */
public QueryException(String message, String queryString, Exception cause) { super( message, cause ); this.queryString = queryString; }
Constructs a QueryException using the specified cause.
Params:
  • cause – The underlying cause
/** * Constructs a QueryException using the specified cause. * * @param cause The underlying cause */
public QueryException(Exception cause) { this( "A query exception occurred", null, cause ); }
Retrieve the query being evaluated when the exception occurred. May be null, but generally should not.
Returns:The query string
/** * Retrieve the query being evaluated when the exception occurred. May be null, but generally should not. * * @return The query string */
public String getQueryString() { return queryString; } @Override public String getMessage() { String msg = getOriginalMessage(); if ( queryString != null ) { msg += " [" + queryString + ']'; } return msg; } protected final String getOriginalMessage() { return super.getMessage(); }
Wraps this exception with another, of same kind, with the specified queryString. If this exception already has a queryString defined, the same exception (this) is returned. Otherwise the protected generateQueryException(String) is called, to allow subclasses to properly create the correct subclass for return.
Params:
  • queryString – The query string that led to the QueryException
Returns:this, if this has null for getQueryString(); otherwise a new QueryException (or subclass) is returned.
/** * Wraps this exception with another, of same kind, with the specified queryString. If this exception already * has a queryString defined, the same exception ({@code this}) is returned. Otherwise the protected * {@link #generateQueryException(String)} is called, to allow subclasses to properly create the correct * subclass for return. * * @param queryString The query string that led to the QueryException * * @return {@code this}, if {@code this} has {@code null} for {@link #getQueryString()}; otherwise a new * QueryException (or subclass) is returned. */
public final QueryException wrapWithQueryString(String queryString) { if ( this.getQueryString() != null ) { return this; } return generateQueryException( queryString ); }
Called from wrapWithQueryString(String) when we really need to generate a new QueryException (or subclass).

NOTE : implementors should take care to use getOriginalMessage() for the message, not getMessage()
Params:
  • queryString – The query string
See Also:
Returns:The generated QueryException (or subclass)
/** * Called from {@link #wrapWithQueryString(String)} when we really need to generate a new QueryException * (or subclass). * <p/> * NOTE : implementors should take care to use {@link #getOriginalMessage()} for the message, not * {@link #getMessage()} * * @param queryString The query string * * @return The generated QueryException (or subclass) * * @see #getOriginalMessage() */
protected QueryException generateQueryException(String queryString) { return new QueryException( getOriginalMessage(), queryString, this ); } }