You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.7 KiB
122 lines
3.7 KiB
/* |
|
* 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 com.fr.third.org.hibernate; |
|
|
|
/** |
|
* 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. |
|
* |
|
* @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. |
|
* |
|
* @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. |
|
* |
|
* @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. |
|
* |
|
* @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. |
|
* |
|
* @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. |
|
* |
|
* @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 ({@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 {@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 ); |
|
} |
|
}
|
|
|