Этот простой метод должен выполнить задание:
import re
def convert(name):
return re.sub(r'([A-Z]*)([A-Z][a-z]+)', lambda x: (x.group(1) + '_' if x.group(1) else '') + x.group(2) + '_', name).rstrip('_').lower()
(взято из здесь , см. рабочий пример онлайн )
Вы определили TransactionManager в конфигурации Spring, но пытаетесь выполнить запрос гибернации методом, который не является транзакционным. Попробуйте добавить @Transactional в свой метод или класс.
Я справился с этой проблемой, указав current_session_context_class
в hibernate config
как «thread
» в соответствии с простой конфигурацией, показанной в документации конфигурации гибернации .
Но он рекомендует, чтобы его не безопасно для использования в промышленности.
Попытка добавить следующее в hibernate config
также должна помочь:
<property name="current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>
Ознакомьтесь с http://docs.jboss.org/hibernate/core/3.6/reference/en. -US / html / architect.html # architect-current-session для получения более подробной информации.