use of org.hibernate.dialect.function.SQLFunction in project hibernate-orm by hibernate.
the class SqlGenerator method beginFunctionTemplate.
@Override
protected void beginFunctionTemplate(AST node, AST nameNode) {
// NOTE for AGGREGATE both nodes are the same; for METHOD the first is the METHOD, the second is the
// METHOD_NAME
FunctionNode functionNode = (FunctionNode) node;
SQLFunction sqlFunction = functionNode.getSQLFunction();
if (sqlFunction == null) {
// if SQLFunction is null we just write the function out as it appears in the hql statement
super.beginFunctionTemplate(node, nameNode);
} else {
// this function has a registered SQLFunction -> redirect output and catch the arguments
outputStack.addFirst(writer);
if (node.getType() == CAST) {
writer = new CastFunctionArguments();
} else {
writer = new StandardFunctionArguments();
}
}
}
use of org.hibernate.dialect.function.SQLFunction in project hibernate-orm by hibernate.
the class SQLFunctionsTest method locateAppropriateDialectFunctionNameForAliasTest.
private String locateAppropriateDialectFunctionNameForAliasTest() {
for (Iterator itr = getDialect().getFunctions().entrySet().iterator(); itr.hasNext(); ) {
final Map.Entry entry = (Map.Entry) itr.next();
final SQLFunction function = (SQLFunction) entry.getValue();
if (!function.hasArguments() && !function.hasParenthesesIfNoArguments()) {
return (String) entry.getKey();
}
}
return null;
}
use of org.hibernate.dialect.function.SQLFunction in project hibernate-orm by hibernate.
the class Configuration method buildSessionFactory.
/**
* Create a {@link SessionFactory} using the properties and mappings in this configuration. The
* SessionFactory will be immutable, so changes made to this Configuration afterQuery building the
* SessionFactory will not affect it.
*
* @param serviceRegistry The registry of services to be used in creating this session factory.
*
* @return The built {@link SessionFactory}
*
* @throws HibernateException usually indicates an invalid configuration or invalid mapping information
*/
public SessionFactory buildSessionFactory(ServiceRegistry serviceRegistry) throws HibernateException {
log.debug("Building session factory using provided StandardServiceRegistry");
final MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder((StandardServiceRegistry) serviceRegistry);
if (implicitNamingStrategy != null) {
metadataBuilder.applyImplicitNamingStrategy(implicitNamingStrategy);
}
if (physicalNamingStrategy != null) {
metadataBuilder.applyPhysicalNamingStrategy(physicalNamingStrategy);
}
if (sharedCacheMode != null) {
metadataBuilder.applySharedCacheMode(sharedCacheMode);
}
if (!typeContributorRegistrations.isEmpty()) {
for (TypeContributor typeContributor : typeContributorRegistrations) {
metadataBuilder.applyTypes(typeContributor);
}
}
if (!basicTypes.isEmpty()) {
for (BasicType basicType : basicTypes) {
metadataBuilder.applyBasicType(basicType);
}
}
if (sqlFunctions != null) {
for (Map.Entry<String, SQLFunction> entry : sqlFunctions.entrySet()) {
metadataBuilder.applySqlFunction(entry.getKey(), entry.getValue());
}
}
if (auxiliaryDatabaseObjectList != null) {
for (AuxiliaryDatabaseObject auxiliaryDatabaseObject : auxiliaryDatabaseObjectList) {
metadataBuilder.applyAuxiliaryDatabaseObject(auxiliaryDatabaseObject);
}
}
if (attributeConverterDefinitionsByClass != null) {
for (AttributeConverterDefinition attributeConverterDefinition : attributeConverterDefinitionsByClass.values()) {
metadataBuilder.applyAttributeConverter(attributeConverterDefinition);
}
}
final Metadata metadata = metadataBuilder.build();
final SessionFactoryBuilder sessionFactoryBuilder = metadata.getSessionFactoryBuilder();
if (interceptor != null && interceptor != EmptyInterceptor.INSTANCE) {
sessionFactoryBuilder.applyInterceptor(interceptor);
}
if (getSessionFactoryObserver() != null) {
sessionFactoryBuilder.addSessionFactoryObservers(getSessionFactoryObserver());
}
if (getEntityNotFoundDelegate() != null) {
sessionFactoryBuilder.applyEntityNotFoundDelegate(getEntityNotFoundDelegate());
}
if (getEntityTuplizerFactory() != null) {
sessionFactoryBuilder.applyEntityTuplizerFactory(getEntityTuplizerFactory());
}
if (getCurrentTenantIdentifierResolver() != null) {
sessionFactoryBuilder.applyCurrentTenantIdentifierResolver(getCurrentTenantIdentifierResolver());
}
return sessionFactoryBuilder.build();
}
Aggregations