Я читал сообщения, подобные этому, но я не могу понять, в чем проблема, в моем случае, поэтому любая помощь будет принята с благодарностью.Hibernte EntityManager не сохраняется
У меня есть объект объекта Xyz
.
Это мой DAO класс:
@Repository
public class XyzDAO {
@PersistenceContext(name = "MyEntityManager")
private EntityManager em;
@Transactional
public void create(Xyz xyz) {
em.persist(xyz);
}
public void setEntityManager(final EntityManager em) {
this.em = em;
}
}
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="MyEntityManager" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>.....Xyz</class>
<properties>
<property name="hibernate.dialect" value="${hibernate.dialect}" />
<property name="hibernate.connection.driver_class" value="${hibernate.connection.driver_class}" />
<property name="hibernate.connection.url" value="${hibernate.connection.url}" />
<property name="hibernate.connection.username" value="${hibernate.connection.username}" />
<property name="hibernate.connection.password" value="${hibernate.connection.password}" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
хуг-config.xml:
<beans .....>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="XyzDAO" class=".....XyzDAO"></bean>
</beans>
Чтение Xyz из БД работает отлично, но если я пытаюсь сохранить Xyz, он работает без ошибок, но ничего не сохраняется в БД, поэтому мое предположение заключается в том, что транзакция не создается д. Если я делаю em.getTransaction().begin()
, это дает ошибку Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead
. Если я делаю em.flush()
, он говорит, что нет транзакции. Поэтому я должен делать что-то неправильно, но не могу понять, что именно.
Вы управляете транзакцией самостоятельно или через Spring, используете ли вы аннотации '@ Transactional', как вы создаете/плагируете своего менеджера транзакций с транзакцией –
@ ankur-singhal, что мне не хватает из вышеперечисленного? – ikcodez