Я использую QueryExpressionPlan от NHibernate для преобразования языка запросов Hibernate в SQL.
Вот пример кода в C#:
var hql = SELECT _table0.Id FROM MyTable1 _table0 WHERE 1=1 and _table0.Address.ZipCode LIKE '%58745%' ;
var sql = NHibernate.Engine.Query.QueryExpressionPlan
(new StringQueryExpression(hql), false, session.EnabledFilters, sessionFactory) ;
Вот сгенерированный SQL. NHibernate не может добавить INNER JOIN
к сгенерированному SQL и возвращает записи в формате через запятую, как показано ниже.
select myTable1.AssetId as col_0_0_ from MyTable1 myTable1, Address address1_
where myTable1.AddressId=address1_.AddressID
and 1=1 and (address1_.ZipCode like '%58745%');
Мой запрос - это то, что я должен добавить к QueryExpression, чтобы он автоматически добавлял внутреннее соединение с сгенерированным sql.
Или NHibernate не добавит INNER JOIN
сам по себе, и каким-то образом мне нужно самому получить эту информацию и передать ее в NHibernate.