У меня есть несколько классов сущностей.Теперь я хочу использовать @PostLoad в каждой сущности.Код функции для каждого объекта одинаков.Поэтому я создал суперкласс (открытый абстрактный класс AbstractModel {..}), который содержит метод @PostLoad.Теперь это возможно сделать?В быстром тесте метод не выполняется, но метод выполняется, помещенный в сущность ... Может быть, у кого-то есть обходной путь для этого?
@MappedSuperclass
public class Parent implements Serializable
{
@PostLoad
public void postLoad()
{
System.out.println("postLoad called!");
}
}
Мой класс сущности, который расширяется от Parent:
@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;
...
}
И ошибка при запуске:
Исключение [EclipseLink-30005] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException Исключение Описание: Возникло исключение при поиске архивов постоянства с помощью ClassLoader: sun.misc.Launcher$AppClassLoader@11b86e7
Внутреннее исключение: javax.persistence.PersistenceException: Exception [EclipseLink-2801Службы постоянства - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.EntityManagerSetupException
Исключение Описание: сбой предварительной установки PersistenceUnit [JPA_TestPU].
Внутреннее исключение: исключение [EclipseLink-7161] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.ValidationException Описание исключения: класс сущностей [class jpatest.Album] имеетпервичный ключ не указан.Он должен определять либо @Id, @EmbeddedId, либо @IdClass.Если вы определили PK с помощью любой из этих аннотаций, убедитесь, что в иерархии классов сущностей нет смешанного типа доступа (аннотированные поля и свойства).