注入 PersistenceContext 或 PersistenceUnit 時,請使用 EntityManager 或 EntityManagerFactory 物件,不要使用子類別。 此規則會偵測 EntityManager 或 EntityManagerFactory 的已注入子類別是否存在。
下列條件將觸發該規則:
- PersistenceContext:
- 註釋定義於欄位層次。
- 欄位類型不是 EntityManager,
javax.persistence.EntityManager
- PersistenceUnit:
- 註釋定義於欄位層次。
- 欄位類型不是 EntityManagerFactory ,
javax.persistence.EntityManagerFactory
原始檔掃描器快速修正程式會將這些子類別取代為 EntityManager 或 EntityManagerFactory 類別。
範例:
- 規則會偵測這個 PersistenceContext 程式碼:
@PersistenceContext
CustomEntityManager myMgr;
- 快速修正程式會將此程式碼變更為:
@PersistenceContext
EntityManager
myMgr;
- 附註: 如果類別尚未包含下列項目的 import 陳述式:
javax.persistence.EntityManager
則更新的程式碼將類似於:
@PersistenceContext
javax.persistence.EntityManager
myMgr;
- 該規則會偵測以下 PersitenceUnit 程式碼:
@PersistenceUnit
CustomEntityManagerFactory
myFactory;
- 快速修正程式會將此程式碼變更為:
@PersistenceUnit
EntityManagerFactory
myFactory;
- 附註: 如果類別尚未包含下列項目的 import 陳述式:
javax.persistence.EntityManagerFactory
則更新的程式碼將類似於:
@PersistenceUnit
javax.persistence.EntityManagerFactory
myFactory;