Skip to content

Commit

Permalink
improve some error messages
Browse files Browse the repository at this point in the history
  • Loading branch information
gavinking committed Jan 2, 2023
1 parent 90c7676 commit c718a46
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 13 deletions.
Expand Up @@ -9,7 +9,6 @@
import java.util.Map;

import org.hibernate.AnnotationException;
import org.hibernate.MappingException;
import org.hibernate.annotations.Check;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.ColumnTransformer;
Expand Down Expand Up @@ -779,8 +778,9 @@ void applyColumnDefault(PropertyData inferredData, int length) {
final ColumnDefault columnDefault =
getOverridableAnnotation( property, ColumnDefault.class, getBuildingContext() );
if ( columnDefault != null ) {
if ( length!=1 ) {
throw new MappingException("@ColumnDefault may only be applied to single-column mappings");
if ( length != 1 ) {
throw new AnnotationException( "'@ColumnDefault' may only be applied to single-column mappings but '"
+ property.getName() + "' maps to " + length + " columns" );
}
setDefaultValue( columnDefault.value() );
}
Expand All @@ -797,7 +797,8 @@ void applyGeneratedAs(PropertyData inferredData, int length) {
getOverridableAnnotation( property, GeneratedColumn.class, getBuildingContext() );
if ( generatedColumn != null ) {
if (length!=1) {
throw new MappingException("@GeneratedColumn may only be applied to single-column mappings");
throw new AnnotationException("'@GeneratedColumn' may only be applied to single-column mappings but '"
+ property.getName() + "' maps to " + length + " columns" );
}
setGeneratedAs( generatedColumn.value() );
}
Expand All @@ -812,8 +813,9 @@ private void applyCheckConstraint(PropertyData inferredData, int length) {
if ( property != null ) {
final Check check = getOverridableAnnotation( property, Check.class, getBuildingContext() );
if ( check != null ) {
if (length!=1) {
throw new MappingException("@Check may only be applied to single-column mappings (use a table-level @Check)");
if ( length != 1 ) {
throw new AnnotationException("'@Check' may only be applied to single-column mappings but '"
+ property.getName() + "' maps to " + length + " columns (use a table-level '@Check')" );
}
setCheckConstraint( check.constraints() );
}
Expand Down
10 changes: 6 additions & 4 deletions hibernate-core/src/main/java/org/hibernate/mapping/Formula.java
Expand Up @@ -13,10 +13,12 @@
import org.hibernate.internal.util.StringHelper;
import org.hibernate.loader.internal.AliasConstantsHelper;
import org.hibernate.query.sqm.function.SqmFunctionRegistry;
import org.hibernate.sql.Template;
import org.hibernate.type.spi.TypeConfiguration;

import static org.hibernate.internal.util.StringHelper.replace;
import static org.hibernate.internal.util.StringHelper.safeInterning;
import static org.hibernate.sql.Template.TEMPLATE;
import static org.hibernate.sql.Template.renderWhereStringTemplate;

/**
* A mapping model object representing a SQL {@linkplain org.hibernate.annotations.Formula formula}
Expand All @@ -42,8 +44,8 @@ public Formula(String formula) {

@Override
public String getTemplate(Dialect dialect, TypeConfiguration typeConfiguration, SqmFunctionRegistry registry) {
final String template = Template.renderWhereStringTemplate( formula, dialect, typeConfiguration, registry );
return safeInterning( StringHelper.replace( template, "{alias}", Template.TEMPLATE ) );
final String template = renderWhereStringTemplate( formula, dialect, typeConfiguration, registry );
return safeInterning( replace( template, "{alias}", TEMPLATE ) );
}

@Override
Expand Down Expand Up @@ -91,6 +93,6 @@ public boolean isFormula() {

@Override
public String toString() {
return this.getClass().getSimpleName() + "( " + formula + " )";
return getClass().getSimpleName() + "( " + formula + " )";
}
}
7 changes: 4 additions & 3 deletions hibernate-core/src/main/java/org/hibernate/sql/Template.java
Expand Up @@ -15,11 +15,12 @@

import org.hibernate.HibernateException;
import org.hibernate.dialect.Dialect;
import org.hibernate.internal.util.StringHelper;
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
import org.hibernate.query.sqm.function.SqmFunctionRegistry;
import org.hibernate.type.spi.TypeConfiguration;

import static org.hibernate.internal.util.StringHelper.WHITESPACE;

/**
* Parses SQL fragments specified in mapping documents.
*
Expand Down Expand Up @@ -100,7 +101,7 @@ public static String renderWhereStringTemplate(
Dialect dialect,
TypeConfiguration typeConfiguration,
SqmFunctionRegistry functionRegistry) {
return renderWhereStringTemplate(sqlWhereString, TEMPLATE, dialect, typeConfiguration, functionRegistry);
return renderWhereStringTemplate( sqlWhereString, TEMPLATE, dialect, typeConfiguration, functionRegistry );
}

/**
Expand Down Expand Up @@ -128,7 +129,7 @@ public static String renderWhereStringTemplate(

String symbols = new StringBuilder()
.append( "=><!+-*/()',|&`" )
.append( StringHelper.WHITESPACE )
.append( WHITESPACE )
.append( dialect.openQuote() )
.append( dialect.closeQuote() )
.toString();
Expand Down

0 comments on commit c718a46

Please sign in to comment.