почему hibernate hql independent вызывает sql отдельный при левом соединении?

У меня есть этот тест HQL:

select distinct o from Order o left join fetch o.lineItems

, и он генерирует SQL разные без очевидной причины:

select distinct order0_.id as id61_0_, orderline1_.order_id as order1_62_1_...

Набор результатов SQL всегда один и тот же (с отдельным SQL и без него):

order id | order name | orderline id | orderline name
---------+------------+--------------+---------------
       1 | foo        |            1 | foo item
       1 | foo        |            2 | bar item
       1 | foo        |            3 | test item
       2 | empty      |         NULL | NULL
       3 | bar        |            4 | qwerty item
       3 | bar        |            5 | asdfgh item

Почему спящий режим генерирует отдельный SQL? Отдельный SQL не имеет никакого смысла и делает запрос медленнее, чем необходимо. lineItems, и он генерирует отдельный SQL без очевидной причины: выберите отдельный order0_.id как id61_0_, orderline1 _....

У меня есть этот тест HQL:

select distinct o from Order o left join fetch o.lineItems

, и он генерирует SQL отличается без очевидной причины:

select distinct order0_.id as id61_0_, orderline1_.order_id as order1_62_1_...

Набор результатов SQL всегда один и тот же (с отдельным SQL и без него):

order id | order name | orderline id | orderline name
---------+------------+--------------+---------------
       1 | foo        |            1 | foo item
       1 | foo        |            2 | bar item
       1 | foo        |            3 | test item
       2 | empty      |         NULL | NULL
       3 | bar        |            4 | qwerty item
       3 | bar        |            5 | asdfgh item

Почему спящий режим генерирует отдельный SQL? Отдельный SQL не имеет никакого смысла и делает запрос медленнее, чем необходимо. lineItems, и он генерирует отдельный SQL без очевидной причины: выберите отдельный order0_.id как id61_0_, orderline1 _....

У меня есть этот тест HQL:

select distinct o from Order o left join fetch o.lineItems

, и он генерирует SQL отличается без очевидной причины:

select distinct order0_.id as id61_0_, orderline1_.order_id as order1_62_1_...

Набор результатов SQL всегда один и тот же (с отдельным SQL и без него):

order id | order name | orderline id | orderline name
---------+------------+--------------+---------------
       1 | foo        |            1 | foo item
       1 | foo        |            2 | bar item
       1 | foo        |            3 | test item
       2 | empty      |         NULL | NULL
       3 | bar        |            4 | qwerty item
       3 | bar        |            5 | asdfgh item

Почему спящий режим генерирует отдельный SQL? Отдельный SQL не имеет никакого смысла и делает запрос медленнее, чем необходимо. Это противоречит FAQ , в котором упоминается, что hql independent в данном случае является всего лишь сокращением для преобразователя результатов:

session.createQuery ("select independent o from Order o left присоединиться к выборке Для этого я использую пакет javax.xml.transform . Однако я получаю исключение javax.xml.transform.TransformerConfigurationException: не удалось скомпилировать таблицу стилей . Это код, который я использую:

public static String transform(String XML, String XSLTRule) throws TransformerException {

    Source xmlInput = new StreamSource(XML);
    Source xslInput = new StreamSource(XSLTRule);

    TransformerFactory tFactory = TransformerFactory.newInstance();
    Transformer transformer = tFactory.newTransformer(xslInput); // this is the line that throws the exception

    Result result = new StreamResult();
    transformer.transform(xmlInput, result);

    return result.toString();
}

Обратите внимание, что я пометил строку, которая вызывает исключение.

Когда я вхожу в метод, значение XSLTRule выглядит следующим образом:


    
    
    
        
            
        
    
    

8
задан Ivan 29 March 2011 в 18:16
поделиться