下面列出了怎么用org.hibernate.query.criteria.LiteralHandlingMode的API类实例代码及写法,或者点击链接到github查看源代码。
@SuppressWarnings({ "unchecked" })
public String render(RenderingContext renderingContext) {
LiteralHandlingMode literalHandlingMode = renderingContext.getCriteriaLiteralHandlingMode();
switch ( literalHandlingMode ) {
case AUTO:
if ( ValueHandlerFactory.isNumeric( literal ) ) {
return ValueHandlerFactory.determineAppropriateHandler( (Class) literal.getClass() ).render( literal );
}
else {
return bindLiteral( renderingContext );
}
case BIND:
return bindLiteral( renderingContext );
case INLINE:
Object literalValue = literal;
if ( String.class.equals( literal.getClass() ) ) {
literalValue = renderingContext.getDialect().inlineLiteral( (String) literal );
}
return ValueHandlerFactory.determineAppropriateHandler( (Class) literal.getClass() ).render( literalValue );
default:
throw new IllegalArgumentException( "Unexpected LiteralHandlingMode: " + literalHandlingMode );
}
}
@Override
public LiteralHandlingMode getCriteriaLiteralHandlingMode() {
return LiteralHandlingMode.INLINE;
// return criteriaLiteralHandlingMode;
}
@Override
public LiteralHandlingMode getCriteriaLiteralHandlingMode() {
return delegate.getCriteriaLiteralHandlingMode();
}
default LiteralHandlingMode getCriteriaLiteralHandlingMode() {
return LiteralHandlingMode.AUTO;
}
@Override
public LiteralHandlingMode getCriteriaLiteralHandlingMode() {
return this.criteriaLiteralHandlingMode;
}
@Override
protected void additionalProperties(Properties properties) {
properties.put(AvailableSettings.CRITERIA_LITERAL_HANDLING_MODE, LiteralHandlingMode.INLINE);
}
@Override
protected void additionalProperties(Properties properties) {
properties.put(AvailableSettings.CRITERIA_LITERAL_HANDLING_MODE, LiteralHandlingMode.BIND);
}
/**
* How literals are going to be handled.
*
* @return literal handling strategy
*/
default LiteralHandlingMode getCriteriaLiteralHandlingMode() {
return LiteralHandlingMode.AUTO;
}