private bool ResolveAsNakedComponentPropertyRefRhs(DotNode parent) { FromElement fromElement = LocateSingleFromElement(); if (fromElement == null) { return(false); } IType propertyType; string propertyPath = parent.GetLhs().Text + "." + Text; try { // check to see if our "propPath" actually // represents a property on the persister propertyType = fromElement.GetPropertyType(Text, propertyPath); } catch (Exception) { // assume we do *not* refer to a property on the given persister return(false); } FromElement = fromElement; // this piece is needed for usage in select clause DataType = propertyType; _nakedPropertyRef = true; return(true); }
private IType GetNakedPropertyType(FromElement fromElement) { if (fromElement == null) { return(null); } string property = OriginalText; IType propertyType = null; try { propertyType = fromElement.GetPropertyType(property, property); } catch (Exception) { } return(propertyType); }
private bool ResolveAsNakedComponentPropertyRefLhs(DotNode parent) { FromElement fromElement = LocateSingleFromElement(); if (fromElement == null) { return(false); } IType componentType = GetNakedPropertyType(fromElement); if (componentType == null) { throw new QueryException("Unable to resolve path [" + parent.Path + "], unexpected token [" + OriginalText + "]"); } if (!componentType.IsComponentType) { throw new QueryException("Property '" + OriginalText + "' is not a component. Use an alias to reference associations or collections."); } IType propertyType; // used to set the type of the parent dot node string propertyPath = Text + "." + NextSibling.Text; try { // check to see if our "propPath" actually // represents a property on the persister propertyType = fromElement.GetPropertyType(Text, propertyPath); } catch (Exception) { // assume we do *not* refer to a property on the given persister return(false); } FromElement = fromElement; parent.PropertyPath = propertyPath; parent.DataType = propertyType; return(true); }
public void ResolveCollectionProperty(IASTNode expr) { String propertyName = CollectionProperties.GetNormalizedPropertyName(_methodName); if (expr is FromReferenceNode) { FromReferenceNode collectionNode = ( FromReferenceNode )expr; // If this is 'elements' then create a new FROM element. if (CollectionPropertyNames.Elements == propertyName) { HandleElements(collectionNode, propertyName); } else { // Not elements(x) _fromElement = collectionNode.FromElement; DataType = _fromElement.GetPropertyType(propertyName, propertyName); _selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect); } if (collectionNode is DotNode) { PrepareAnyImplicitJoins(( DotNode )collectionNode); } if (!_inSelect) { _fromElement.Text = ""; _fromElement.UseWhereFragment = false; } PrepareSelectColumns(_selectColumns); Text = _selectColumns[0]; Type = HqlSqlWalker.SQL_TOKEN; } else { throw new SemanticException( "Unexpected expression " + expr + " found for collection function " + propertyName ); } }
public void ResolveCollectionProperty(IASTNode expr) { var propertyName = CollectionProperties.GetNormalizedPropertyName(_methodName); var collectionNode = expr as FromReferenceNode; if (collectionNode == null) { throw new SemanticException(string.Format("Unexpected expression {0} found for collection function {1}", expr, propertyName)); } // If this is 'elements' then create a new FROM element. if (CollectionPropertyNames.Elements == propertyName) { HandleElements(collectionNode, propertyName); } else { // Not elements(x) _fromElement = collectionNode.FromElement; DataType = _fromElement.GetPropertyType(propertyName, propertyName); _selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect); } var dotNode = collectionNode as DotNode; if (dotNode != null) { PrepareAnyImplicitJoins(dotNode); } if (!_inSelect) { _fromElement.Text = ""; _fromElement.UseWhereFragment = false; } PrepareSelectColumns(_selectColumns); Text = _selectColumns[0]; Type = HqlSqlWalker.SQL_TOKEN; }
private IType GetDataType() { if (DataType == null) { FromElement fromElement = GetLhs().FromElement; if (fromElement == null) { return(null); } // If the lhs is a collection, use CollectionPropertyMapping IType propertyType = fromElement.GetPropertyType(_propertyName, _propertyPath); if (Log.IsDebugEnabled) { Log.Debug("getDataType() : " + _propertyPath + " -> " + propertyType); } DataType = propertyType; } return(DataType); }
public void ResolveCollectionProperty(IASTNode expr) { String propertyName = CollectionProperties.GetNormalizedPropertyName( _methodName ); if ( expr is FromReferenceNode ) { FromReferenceNode collectionNode = ( FromReferenceNode ) expr; // If this is 'elements' then create a new FROM element. if ( CollectionPropertyNames.Elements == propertyName ) { HandleElements( collectionNode, propertyName ); } else { // Not elements(x) _fromElement = collectionNode.FromElement; DataType = _fromElement.GetPropertyType( propertyName, propertyName ); _selectColumns = _fromElement.ToColumns( _fromElement.TableAlias, propertyName, _inSelect ); } if ( collectionNode is DotNode ) { PrepareAnyImplicitJoins( ( DotNode ) collectionNode ); } if ( !_inSelect ) { _fromElement.Text = ""; _fromElement.UseWhereFragment = false; } PrepareSelectColumns( _selectColumns ); Text = _selectColumns[0]; Type = HqlSqlWalker.SQL_TOKEN; } else { throw new SemanticException( "Unexpected expression " + expr + " found for collection function " + propertyName ); } }
private IType GetNakedPropertyType(FromElement fromElement) { if (fromElement == null) { return null; } string property = OriginalText; IType propertyType = null; try { propertyType = fromElement.GetPropertyType(property, property); } catch (Exception) { } return propertyType; }
public void ResolveCollectionProperty(IASTNode expr) { var propertyName = CollectionProperties.GetNormalizedPropertyName( _methodName ); var collectionNode = expr as FromReferenceNode; if (collectionNode == null) throw new SemanticException(string.Format("Unexpected expression {0} found for collection function {1}", expr, propertyName)); // If this is 'elements' then create a new FROM element. if (CollectionPropertyNames.Elements == propertyName) { HandleElements(collectionNode, propertyName); } else { // Not elements(x) _fromElement = collectionNode.FromElement; DataType = _fromElement.GetPropertyType(propertyName, propertyName); _selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect); } var dotNode = collectionNode as DotNode; if (dotNode != null) { PrepareAnyImplicitJoins(dotNode); } if (!_inSelect) { _fromElement.Text = ""; _fromElement.UseWhereFragment = false; } PrepareSelectColumns(_selectColumns); Text = _selectColumns[0]; Type = HqlSqlWalker.SQL_TOKEN; }