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 - класс результирующих экземпляров

Надеюсь это поможет.

Другие вопросы по тегам