Я не могу понять, почему этот код не работает. Я уже искал решения, но не нашел. Может ли кто-нибудь мне помочь?
Я пытаюсь использовать 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 не мой родной язык.
Спасибо!