我有幾個實體類。現在我想在每個實體中使用@PostLoad。功能代碼適用於每個實體。所以我創建了一個包含@PostLoad方法的超類(公共抽象類AbstractModel {..})。現在可以做到這一點嗎?在一個快速測試中,該方法沒有執行,但該方法被執行放置在實體中...也許有人對此有一個解決方法?@PostLoad超類
@Entity
@Table(name = "albums") //de naam van de tabel wordt 'albums'
public class Album extends Parent implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id") //de naam van de kolom wordt 'id'
private Long id;
...
}
,當我運行它的錯誤:
@MappedSuperclass
public class Parent implements Serializable
{
@PostLoad
public void postLoad()
{
System.out.println("postLoad called!");
}
}
我的實體類,誰從父延伸
例外[EclipseLink的-30005(Eclipse的 持久性服務 - 2.0.2.v20100323-r6872):org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 異常說明:異常 - 異常[EclipseLink的-28018(Eclipse的 持久性服務: [email protected]
內部異常: javax.persistence.PersistenceException 210,在用類加載器搜索 持續拋出檔案2.0.2.v20100323-r6872):org.eclipse.persistence.exceptions.EntityManagerSetupException
異常描述:PersistenceUnit [JPA_TestPU] 的預部署 失敗。
內部異常:異常 [的EclipseLink-7161](蝕 持久性服務 - 2.0.2.v20100323-r6872):org.eclipse.persistence.exceptions.ValidationException 異常描述:實體類 [類jpatest。相冊]沒有指定主要的 密鑰。它應該定義 @Id,@EmbeddedId或@IdClass。如果 您已經使用這些 註釋中的任何一個定義了PK,那麼確保 012xx在實體類層次結構中沒有混合訪問類型( 字段和屬性都註釋了)。
只是要在安全方面,你有註解的父類的抽象@實體還是@MappedSuperclass? – Erik 2011-02-24 20:19:30
如果你發佈你的代碼,這將更容易 – Erik 2011-02-24 20:26:35
現在我把它標記爲@MappedSuperclass,但現在它抱怨他們沒有在子類中的主鍵(子類是實體,超類是映射超類)。在子類中,它們是主鍵。 – 2011-02-24 20:40:09