У меня есть веб-приложение на Java, которое использует Hibernate ORM для подключения к базе данных.Существует много таблиц базы данных, в основном настроенных как hibernate xml mapping files
, то есть hbm.xml
, где каждый файл является таблицей в базе данных.
Теперь вопрос в том, что - есть представление, созданное с помощью postgreSQl в базе данных, и я хочу использовать это представление в Java, как это сделать?Если я создам еще один hbm.xml
файл, это будет таблица, созданная в базе данных.Я читал через Интернет, есть примеры того, как использовать его с аннотациями, но я не настроил его в своем веб-приложении.
Обновление 1:
После некоторых исследований и рекомендаций по ответу ниже, у меня есть атм:
Я создал xml
файл отображения и класс Java с getters /сеттеры для каждого свойства:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"
>
<hibernate-mapping>
<class name="org.xxx.model.SearchView" table="search" mutable="false">
<id name="uuId" column="uuid">
</id>
<property name="typeOfCRA" column="typeofcra" />
<property name="birthDate" column="birthDate" />
<property name="lastName" column="lastname" />
<property name="firstName" column="firstname" />
<property name="middleName" column="middlename" />
<property name="recordId" column="recordid" />
<property name="registrationDate" column="registrationdate" />
<property name="state" column="state" />
<property name="organisationunitId" column="organisationunitid" />
<property name="version" column="version" />
<property name="gender" column="gender" />
</class>
</hibernate-mapping>
Вот как я вызываю его в java для получения списка результатов из базы данных:
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(SearchView.class);
criteria.add(Restrictions.like("typeofcra", "birth"));
List<SearchView> tmp =criteria.list();
Это ничего не дает никаких ошибок.Он возвращает 0 записей на основе моих критериев.Но когда я отфильтровываю его непосредственно в Postgresql
с теми же критериями, он возвращает почти 600 тыс. Результатов.
Во время компиляции или выполнения этого фрагмента кода также появляются 0 ошибок.Любая помощь приветствуется.
Обновление2:
Конфиденциальный файл конфигурации:
connection.dialect = org.hibernate.dialect.PostgreSQLDialect
connection.driver_class = org.postgresql.Driver
connection.url = jdbc:postgresql://localhost:5432/finalDb
connection.username = postgres
connection.password = root
connection.schema = update
Обновлен код, основанный на ответе ниже:
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(SearchView.class);
criteria.add(Restrictions.like("typeOfCRA", "%birth%"));
List<SearchView> tmp =criteria.list();
Прямой вызовв PgAdmin работает:
SELECT typeofcra, dateofbirth, lastname, firstname, middlename, recordid,
registrationdate, state, organisationunitid, uuid, version, gender
FROM public.search where typeofcra like '%birth%';
Но из Java это не работает.