שגיאת שינה "אין ספק התמדה עבור EntityManager"
1. הקדמה
במדריך זה נראה כיצד לפתור שגיאת שינה נפוצה - "אין ספק התמדה עבור EntityManager". במילים פשוטות, ספק התמדה מתייחס ליישום ה- JPA הספציפי המשמש ביישום שלנו כדי להתמיד באובייקטים למסד הנתונים.
למידע נוסף על JPA ויישומיו, אנו יכולים להתייחס למאמר שלנו על ההבדל בין JPA, Hibernate ו- EclipseLink.
2. מה גורם לשגיאה
נראה את השגיאה מתי היישום לא יודע איזהיש להשתמש בספק התמדה.
זה קורה כאשר ספק ההתמדה לא מוזכר ב- התמדה.קסמל קובץ ולא הוגדר ב PersistenceUnitInfo כיתת יישום.
3. תיקון השגיאה
כדי לתקן שגיאה זו, עלינו פשוט לעשות זאת הגדר את ספק ההתמדה ב- התמדה.קסמל קוֹבֶץ:
org.hibernate.jpa.HibernatePersistenceProvider
או אם אנו משתמשים תרדמת גרסה 4.2 ומעלה:
org.hibernate.ejb.HibernatePersistence
למקרה שיישמנו את PersistenceUnitInfo ממשק ביישום שלנו, עלינו לעקוף גם את
getPersistenceProviderClassName () שיטה:
@Override מחרוזת ציבורית getPersistenceProviderClassName () {להחזיר HibernatePersistenceProvider.class.getName (); }
כדי להבטיח את כל צנצנות השינה הנחוצות, יש להוסיף את ליבת שינה תלות ב pom.xml קוֹבֶץ:
org.hibernate hibernate-core $ {hibernate.version}
4. מסקנה
לסיכום, ראינו את הגורמים האפשריים לשגיאת שינה "אין ספק התמדה עבור EntityManager" ודרכים שונות לפתור אותה.
כרגיל, פרויקט ה- Hibernate לדוגמה זמין ב- GitHub.