2016-01-08 2 views
2

J'ai un problème avec Spring Data, je reçois une exception de type NotSerializableException.Comment éviter l'exception de sérialisation (NotSerializableException) avec Spring Data

Ci-dessous un exemple pour expliquer comment j'ai ce problème:

@Component 
@Scope("session") 
public class Bean implements Serializable { 

    @Autowired 
    private FooRepository repository; 

} 

public interface FooRepository extends JpaRepository<Foo, Long> 

Après je regarde dans le code, je l'ai vu que le org.springframework.data.repository.Reposotiry d'interface n'est pas sérialisable.

Et la dernière version de Spring Data n'a pas changé.

Je pourrais remplacer la sérilisation mais je ne sais pas si c'est la meilleure solution.

Pourriez-vous me dire si vous avez trouvé une autre solution à ce problème ou workaroud.

Merci d'avance.

Répondre

1

Vous obtiendrez "l'exception" lorsqu'une instance doit implémenter Serializable. L'exception est levée par l'exécution de la sérialisation ou par l'instance de la classe.

Je pense que la solution la plus simple consiste à rendre FooRepository "sérialisable", mais vous ne pouvez pas le faire car c'est une bibliothèque tierce. Donc, dans votre cas, vous devez "marquer" comme transient; Une fois que vous faites cela, il sera ignoré par l'exécution sérialisable.

@Component 
@Scope("session") 
public class Bean implements Serializable { 

    @Autowired 
    private transient FooRepository repository; 

} 

NOTE: Ce est en théorie, je ne l'ai jamais fait avec un haricot injecté, mais le résultat devrait être le même. Quoi qu'il en soit, cela s'applique à votre problème, peut-être pas à votre solution spécifique.