Как использовать UNION ALL вместе с Hibernate Native Query? - PullRequest
0 голосов
/ 11 июля 2020

Я не могу понять, почему этот код не работает. Я уже искал решения, но не нашел. Может ли кто-нибудь мне помочь?

Я пытаюсь использовать Hibernate Native SQL вместе с UNION ALL, но результат повторяется.

У меня есть две таблицы (product и product_aud). Они выглядят одинаково по количеству столбцов, но product_aud имеет на два столбца больше, чем таблица product.

В этом примере ниже я ожидал бы иметь два разных guish названия продуктов, одно из таблицы продуктов и другой из product_aud, но результат с таким же именем только из таблицы продуктов. Имя из product_aud было проигнорировано.

Самое странное, если я запускаю сгенерированный SQL из Hibernate непосредственно в базе данных (oracle), он работает. Я получаю две разные строки.

Например:

        StringBuilder query = new StringBuilder();
        query.append("     SELECT {p.*} FROM product p ");      //<-------PRODUCT
        query.append("     WHERE p.id = 1123411 ");
        //                 ... a lot of clauses 
        query.append(" UNION ALL ");
        query.append("     SELECT {p.*} FROM product_aud p ");  //<-------PRODUCT_AUD
        query.append("     WHERE p.id = 1123411 ");
        //                 ... a lot of clauses 
        
        SessionFactory sessionFactory = em.getEntityManagerFactory().unwrap(SessionFactory.class);
        Session sessionHibernate = sessionFactory.openSession();
        SQLQuery nativeQuery = sessionHibernate.createSQLQuery(query.toString());
        nativeQuery.addEntity("p", Product.class);
        List<Product> products = nativeQuery.list();
        
        for (Product p : products) {
            System.out.println(p.getName());  
            //output:   ABC ABC
            //expected: ABC DEF
        }

введите описание изображения здесь

Вопрос в том, как мне получить эти два разных продукта guish.

Кстати, product_aud генерируется Hibernate Envers.

I Буду признателен за любую помощь. Английский sh не мой родной язык.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...