OpenJPA:JPQL против собственного запроса
Я использую OpenJPA в своей работе. Иногда мне нужно использовать JPQL, а иногда мне нужно использовать собственный запрос (em.createNativQuery).
Я наблюдаю большую проблему с нативным запросом. Я должен предоставить имя схемы тоже.
Как и для JPQL я могу написать:
em.createQuery("Select e from Entity_name e").getResultList();
Но в случае нативного запроса мне нужно сделать:
em.createNativeQuery("Select e from SCHEMANAME.Table_name e").getResultList()
Почему это так? И разве это не неправильное поведение, поскольку имя схемы может меняться со временем.
1 ответ
Попробуйте указать следующее свойство в вашей конфигурации.
<property name="openjpa.jdbc.Schema" value="SCHEMANAME"/>
Если вы используете как JPQL, так и собственные запросы, попробуйте добавить фактическую сущность следующим образом.
например Query query = em.createNativeQuery("SELECT * FROM MAG", Magazine.class);
В противном случае вы можете столкнуться с проблемами несоответствия данных, такими как грязное чтение, потерянные обновления.etc
ОБНОВИТЬ
Query createNativeQuery(java.lang.String sqlString,
java.lang.Class resultClass)
Создайте экземпляр Query для выполнения собственного запроса SQL.
Параметры: sqlString - собственная строка запроса SQL
resultClass - класс результирующих экземпляров
Надеюсь это поможет.