AuditingEntityListener не работает для сущности, которая расширяет другую абстрактную сущность весной jpa - PullRequest
0 голосов
/ 19 ноября 2018

Я использовал аннотации @CreatedBy, @CreatedDate, @LastModifiedBy и @LastModifiedDate в соответствующих полях.Используя @ MappedSuperclass, @ EntityListeners я смог сохранить выше столбцы.

Но это не работает для приведенного ниже случая:

@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Auditable<U> {
    @CreatedBy
    protected U createdBy;
    @CreatedDate
    @Temporal(TIMESTAMP)
    protected Date creationDate;
    @LastModifiedBy
    protected U lastModifiedBy;
    @LastModifiedDate
    @Temporal(TIMESTAMP)
    protected Date lastModifiedDate;
}

@Entity
@Table(name = "tabel1")
@PrimaryKeyJoinColumn(name = "ID")
class A extends B {

    @Column(name = "NAME1", nullable = false)
    private String name1;
    @Column(name = "CONTENT1", nullable = false)
    private String content1;
}

@Entity
@Table(name = "tabel2")
public abstract class B extends Auditable{
    @Id
    @GeneratedValue
    @Column(name = "ID", nullable = false)
    private int id;
    @Column(name = "NAME", nullable = false)
    private String name;
    @Column(name = "CONTENT", nullable = false)
    private String content;
}

AuditorAwareImpl.java

public class AuditorAwareImpl implements AuditorAware<String>
{
    @Override
    public Optional<String> getCurrentAuditor()
    {
        return Optional.ofNullable("Saravanan");

    }

}

JpaAuditConfiguration.java

@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
public class JpaAuditConfiguration
{
    @Bean
    public AuditorAware<String> auditorProvider()
    {

        return new AuditorAwareImpl();
    }
}

В этом случае объект B заполняется столбцами аудита.Но сущность А это не так.Есть ли способ заселить Субъект А или я здесь что-то пропустил? ??

1 Ответ

0 голосов
/ 19 ноября 2018

Я добавил @ Entity аннотацию к вашим классам:

@Entity
public class A extends B {

    @Id
    @GeneratedValue
    private Integer id;

    private String name;
    private String content;

}

@Entity
public class B extends Auditable<String> {

    @Id
    @GeneratedValue
    private Integer id;

    private String name;
    private String content;
}

Класс конфигурации сохраняемости (для Spring Boot):

@Configuration
@EnableJpaAuditing
public class PersistenceConfig {
}

Все работает отлично!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...