List of usage examples for org.hibernate.tuple.entity EntityMetamodel getPropertyNullability
public boolean[] getPropertyNullability()
From source file:org.babyfish.hibernate.hql.XQueryTranslatorImpl.java
License:Open Source License
@SuppressWarnings("unchecked") protected void onProcessCountSqlAST(AST sqlAst, boolean distinct) { QueryNode queryNode = (QueryNode) sqlAst; Set<FromElement> usedFromElements = new HashSet<>(ReferenceEqualityComparator.getInstance()); for (FromElement fromElement : (List<FromElement>) queryNode.getFromClause().getFromElements()) { if (fromElement.getClass() == FromElement.class && fromElement.getWithClauseFragment() == null) { if (distinct || fromElement.getQueryableCollection() == null) { if (fromElement.getText().startsWith("left ")) { continue; } else if (fromElement.getRole() != null && fromElement.getQueryableCollection() == null && SettingsFactory.isDbSchemaStrict(this.factory.getProperties())) { String role = fromElement.getRole(); int lastDotIndex = role.lastIndexOf('.'); String entityName = role.substring(0, lastDotIndex); String propertyName = role.substring(lastDotIndex + 1); EntityMetamodel entityMetamodel = this.factory.getEntityPersister(entityName) .getEntityMetamodel(); int propertyIndex = entityMetamodel.getPropertyIndex(propertyName); if (entityMetamodel.getPropertyTypes()[propertyIndex] instanceof ManyToOneType) { boolean nullable = entityMetamodel.getPropertyNullability()[propertyIndex]; if (!nullable) { continue; }/*ww w.j a va 2 s.co m*/ } } } } SqlASTHelper.addFromElementAndancestors(usedFromElements, fromElement); } SqlASTHelper.removeFromElementsExcept(queryNode, usedFromElements); }