После обновления до Hibernate 5 - операции записи не разрешены в режиме только для чтения (FlushMode.MANUAL) - PullRequest
0 голосов
/ 09 июля 2019

Я обновляюсь с 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

...