2017-11-16 1 views
1

Ich versuche, den Benutzerdetaildienst zu implementieren, um Prüfdaten für die Entitäten einzuschließen.Spring Data REST - Implementieren von Benutzerdetaildienst

Die UserEntity Klasse ist wie folgt:

@Data 
@Entity 
@Audited 
public class UserEntity { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 

    @Column(unique = true,updatable = false) 
    private String uuid; 

    private String username; 

    private String firstName; 

    private String lastName; 
} 

ich auch die folgende Klasse haben, die die Prüfung Meta-Daten enthält. Diese Klasse wird von anderen Entitäten erweitert.

@Data 
@MappedSuperclass 
@EntityListeners(AuditingEntityListener.class) 
@Audited 
public class Auditable { 

    @CreatedDate 
    private Long createdDate; 

    @LastModifiedDate 
    private Long lastModifiedDate; 

    @CreatedBy 
    private UserEntity createdBy; 

    @LastModifiedBy 
    private UserEntity modifiedBy; 

} 

Hier ist mein Benutzer Detail-Service.

@Configuration 
@EnableJpaAuditing 
public class SpringSecurityAuditorAware implements AuditorAware<UserEntity> { 

    @Autowired 
    private AccessToken accessToken; 

    @Autowired 
    private UserEntityRepository userRepo; 

    @Override 
    public UserEntity getCurrentAuditor() { 

     UserEntity user = userRepo.findByUuid(accessToken.getSubject()); 
     return user; 
    } 

} 

Jetzt, wenn ich den Code ausführen, erhalte ich die folgende Fehlermeldung.

Caused by: org.hibernate.MappingException: Could not determine type for: api.core.model.UserEntity, at table: business_entity, for columns: [org.hibernate.mapping.Column(created_by)] 
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:431) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.addValueInFirstPass(AuditMetadataGenerator.java:219) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.addValue(AuditMetadataGenerator.java:345) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.addProperties(AuditMetadataGenerator.java:371) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.generateFirstPass(AuditMetadataGenerator.java:662) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.configuration.internal.EntitiesConfigurator.configure(EntitiesConfigurator.java:94) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.boot.internal.EnversServiceImpl.doInitialize(EnversServiceImpl.java:152) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.boot.internal.EnversServiceImpl.initialize(EnversServiceImpl.java:117) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.envers.boot.internal.AdditionalJaxbMappingProducerImpl.produceAdditionalMappings(AdditionalJaxbMappingProducerImpl.java:99) ~[hibernate-envers-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:288) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370) ~[spring-orm-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359) ~[spring-orm-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE] 
    ... 171 common frames omitted 

Wenn ich entfernen Sie die UserEntity Felder funktioniert alles einwandfrei und die Audit-Daten createdDate und lastModifiedDate werden in der Datenbank korrekt aufgezeichnet worden.

Ich habe auch @ManyToOne Annotation für UserEntity Felder und der Code läuft gut, aber die Datenbank hat nicht die Felder createdBy und modifiedBy. Wie behebe ich das?

Antwort

0

sollten wir Tabelle namens Auditable_aud haben.

Verwandte Themen