+1 امتیاز
قبل در برنامه نویسی توسط (50 امتیاز)
برچسب گذاری دوباره قبل توسط

در یک پروژه نرم افزاری از Spring + Hibernate بهمراه بانک اطلاعاتی mysql استفاده شده است. پس از دریافت اطلاعات از کاربر براساس Entity های موجود یک Entity ایجاد و با استفاده از متد persist مربوط به EntityManager به منظور ثبت در بانک اطلاعاتی استفاده می شود. علیرغم تنظیمات صورت پذیرفته در فایل های پیکربندی متاسفانه متد مورد نظر بدون خطا انجام شده ولی تغییرات در بانک اطلاعاتی ثبت نمی گردد.

 application context
 
 @Repository
public class AccountManager implements IAccountManager {

	@PersistenceContext
	private EntityManager em; /* -- 8< -- Query methods omitted -- 8< -- */

	public Account storeAccount(Account ac) {
		em.persist(ac);
		return ac;
	}
}

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

به نظر میرسه که شما هیچ Transaction باز نکردین و به همین دلیل اطلاعات شما در دیتابیس ذخیره نمی شود.

برای حل مشکل باید با کدی شبیه کد زیر درون یک transaction عملیات خود را انجام دهید:

EntityTransaction tx = em.getTransaction();
try
{
    tx.begin();
    
    //your code to persist objects
    
    tx.commit();
}
finally
{
    if (tx.isActive())
    {
        tx.rollback();
    }
}

اگر هم از Spring استفاده می کنید در صورتی که Transaction Management در Spring را فعال کرده اید (JpaTransactionManager) کافی است بر روی کلاس AccountManager خود @Transactional بزنید.

قبل توسط (50 امتیاز)
در صورتی که از transaction manager spring نیز به صورت گفته شده یا حتی بالای متد استفاده نماییم، نیز مشکل به قوت خودش باقی ست.
<bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />       
    </bean>
        
        <!-- Use @Transaction annotations for managing transactions -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
قبل توسط (1.1هزار امتیاز)
احتمال زیاد پروژه شما مشکل تنظیمات داره، مثال زیر هم transaction spring داره و هم jpa  روی RESOURCE_LOCAL تنظیم شده. یه نگاهی بیاندازید و مشکل رو پیدا کنید:
http://www.objectdb.com/tutorial/jpa/spring/maven

سوالات مشابه

+1 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 579 بازدید
0 امتیاز
3 پاسخ 875 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
2 پاسخ 1.8هزار بازدید
+1 امتیاز
3 پاسخ 1.6هزار بازدید
0 امتیاز
1 پاسخ 615 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
0 امتیاز
1 پاسخ 465 بازدید
+5 امتیاز
1 پاسخ 4.4هزار بازدید
+1 امتیاز
1 پاسخ 607 بازدید
...