Я обновляюсь с Hibernate3 до Hibernate 5. Я получаю вышеуказанную ошибку
"Операции записи запрещены в режиме только для чтения.
(FlushMode.MANUAL) "
каждый раз, когда я пытаюсь вставить новую запись в мою БД, как DAo (в интеграционном тесте).
Вот что у меня есть мой конфиг XML:
<bean id="txManager"
lass="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
Это то, что пользователи Stackoverflow предлагают в аналогичных темах, но оно все еще не работает.
Когда я аннотирую свой DAO с помощью @Transactional, я получаю исключение прокси, когда пытаюсь прочитать DAO-компонент из контекста:
@Transactional
@Repository("clientDao")
public class HibernateClientDao extends HibernateGenericDao<Client, Long> implements ClientDao {
Так что @Transaction заставит этот тестовый оператор возвращать e $ Proxy0, а не реальный объект, поэтому приведение bean-компонента завершится неудачей:
public class HibernateClientDaoIntegrationTest {
private HibernateClientDao clientDao;
@Before
public void setUp() {
clientDao = (HibernateClientDao) IntegrationTestContext.getContext().getBean("clientDao");
}
Ошибка, которую я получаю, комментируя @Transactional в DAO:
java.lang.ClassCastException: com.sun.proxy. $ Proxy57 не может быть приведен к
mydao.HibernatePolicyDao