2017-10-26 3 views
0

Im die Prüfung der Umsetzung basiert auf [1], aber ich bin nicht Erfolg immer mit @createdBy und @ModifiedByFrühling Revision - Daten zu lange auf createdBy

@Entity 
@EntityListeners(AuditingEntityListener.class) 
@Table(name = "entity") 
public class myEntity { 

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Integer idMyEntity; 

    @Column(unique=true) 
    private String nome; 

    @CreatedBy 
    private UserEntity userCreated; 

    @LastModifiedBy 
    private UserEntity userModified; 

    ... getters and setters 

}

Und mein AudityAware ist:

public class AuditorAwareImp implements AuditorAware<UserEntity> { 

    public UserEntity getCurrentAuditor() { 

     Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 

     if (authentication == null || !authentication.isAuthenticated()) { 
      return null; 
     } 


     System.out.println((UserEntity) authentication.getPrincipal()); 

     return ((UserEntity) authentication.getPrincipal()); 
    } 
} 

Und meine Bohne ist:

@Bean 
public AuditorAware<UserEntity> auditorAware() { 
    return new AuditorAwareImp(); 
} 

Wenn ich debuggen, sehe ich die userEntity wie erwartet geladen, aber wenn JPA rettet, rettet es die .toString() statt UserEntity @Id, die nicht korrekt ist ... mir einen Fehler geben:

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'userCreated' at row 1 

Warum passiert es und wie wird es repariert?

[1] https://docs.spring.io/spring-data/data-jpa/docs/1.7.0.DATAJPA-580-SNAPSHOT/reference/html/auditing.html

Antwort

0

Die Probleme waren in der Beziehung zwischen den Entitäten. Als ich es tat, löste es mein Problem.

Nach @CreatedBy und @LastModifiedBy i hinzufügen @OneToMany meine Beziehung nach und arbeitete als

erwartet
Verwandte Themen