Изменение свойств JPA гибернации во время выполнения - PullRequest
0 голосов
/ 17 июня 2020

Обычно я использую постоянство. xml для настройки спящего режима с помощью таких свойств, как

<properties>        
    <property name="javax.persistence.lock.timeout" value="90000"/>
    <property name="javax.persistence.query.timeout" value="90000" />
    <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2012Dialect" />
<!-- ... -->

Однако мне нужно изменить одно свойство во время выполнения (точнее, мне нужно отрегулируйте значение javax.persistence.query.timeout во время выполнения). Поэтому я попытался настроить сеанс вручную в ситуациях, когда мне нужны свойства, отличные от значений по умолчанию, например:

Configuration config = new Configuration();
config.addResource("persistence.xml");
config.setProperty("javax.persistence.query.timeout", "100000");
Session session = config.buildSessionFactory().getCurrentSession();

Однако это дает следующее исключение:

org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found : persistence.xml : origin(persistence.xml)

Что имеет смысл, как постоянство . xml не является обычным файлом ресурсов гибернации. Итак, как мне установить конфигурацию на основе persisten c. xml (я не хочу настраивать все свойства дважды)? Или, в более общем плане, как мне перенастроить спящий режим во время выполнения?

Обратите внимание, что это похоже на, но не дублирует (поскольку он более конкретен c), этот пост .

1 Ответ

1 голос
/ 17 июня 2020

Его можно переопределить / установить для каждого запроса:

query.setHint("javax.persistence.query.timeout", 5000); // 5 seconds

Если ваш объект запроса имеет тип org.hibernate.Query, вы можете сделать:

query.setTimeout(5);

https://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Query.html#setTimeout (int)

Изменение свойств в EntityManagerFactory во время выполнения (чтобы повлиять на все запросы) не изменит действующую конфигурацию. Вы можете полностью создать новую EntityManagerFactory, если хотите, как описано здесь: Динамическое изменение единицы сохранения состояния - JPA

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