EntityManager'ı kullanarak veritabanına kalıcı olarak devam etme sorunuyla karşılaştım. Bulduğum cevaplara dayanarak, DaoJpa'mda bu 4 şeyi denedim ama böyle bir şey yapmaya devam ettim ama hala başarısız oldu. Denetleyici kısmenEntityManager öğesi veritabanına kaydetmek için sürekli kullanamazsınız
Kod:
@Transactional
SmartProduct smartProduct = new SmartProduct();
smartProduct.setName("Dove Soap");
smartProductDao.persist(smartProduct);
1. DaoJpa:
Çalışmaz
@Transactional
public void persist(SmartProduct smartProduct) {
entityManager.persist(smartProduct);
Burada dört Denedim yollarını bağlı!
2.
@Transactional
public void persist(SmartProduct smartProduct) {
entityManager.persist(smartProduct);
entityManager.flush();
İstisna aldım: oluşturmak için izin verilmez: Hiçbir işlem sürüyor aldım
3.
@Transactional
public void persist(SmartProduct smartProduct) {
EntityTransaction emTransaction = entityManager.getTransaction();
emTransaction.begin();
entityManager.persist(smartProduct);
emTransaction.commit();
entityManager.close();
İstisna olan paylaşılan EntityMa üzerinde işlem Nager - Kullanım Bahar işlemleri ya da EJB CMT aldığım yerine
4.
@Transactional
public void persist(SmartProduct smartProduct) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
EntityManager em = emf.createEntityManager();
EntityTransaction etx = em.getTransaction();
etx.begin();
em.persist(smartProduct);
etx.commit();
em.close();
emf.close();
İstisna:
biri bana anlamaya yardım eder misin JDBC bağlantıları
sağlamalısınız uygulama sorun lütfen? Şimdiden çok teşekkürler!Çok teşekkürler JustinKSU'nun yardımı. Ek açıklamayı Bahar bağlamına ekledim ve sonra çözdüm! İşte benim Bahar bağlamda önceki sürümüdür:
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
<property name="persistenceUnitName" value="persistenceUnit" />
<property name="dataSource" ref="dataSource" />
</bean>
eklendi sonra
<tx:annotation-driven />
çalışır: Eğer olması gereken
<tx:annotation-driven />
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
<property name="persistenceUnitName" value="persistenceUnit" />
<property name="dataSource" ref="dataSource" />
</bean>
Kalıcı yöntemde @ Transactional kullanmayı denediniz mi? – JustinKSU
Üzgünüz, yazıdan bahsetmeyi unuttum. Evet Yöntemden önce tüm dört yolla Transactional ekledim. Ayrıca İşlemsel ek açıklamadan sonra (readOnly = true)/(readOnly = false) eklemeyi ve hatta (propagation = Propagation.REQUIRED) eklemeyi denedim, ancak hiçbir fark yok gibi görünüyor. –
EntityManager'ı enjekte etmek için @PersistenceContext kullanıyor musunuz? – JustinKSU