Spring - Ungültiger Argumentwert: java.io.NotSerializableException

7

Ich versuche, einen Datensatz in eine Tabelle einzufügen, und ich erhalte den folgenden Fehler: Ich habe auch versucht, "?" für die Parameter in der SQL-Anweisung und bekam den gleichen Fehler.

Fehler

%Vor%

JdbcOfficersDAO

%Vor%

Officers.java

/ **  *  * /

%Vor%

Aktualisiertes Fehlerprotokoll

%Vor%     
devdar 04.10.2012, 18:42
quelle

6 Antworten

1

Es war eine Kombination aus zwei Dingen, die mir helfen, dieses Problem zu lösen:

%Vor%

und in der Klasse i enthalten als @Visher angegeben

%Vor%     
devdar 15.03.2013, 15:52
quelle
14

Verwenden Sie JdbcTemplate (anstelle von SimpleJdbcTemplate , das veraltet ist) oder NamedParameterJdbcTemplate ?

Benannte Parameter werden nur in SimpleJdbcTemplate und NamedParameterJdbcTemplate unterstützt.

    
Toothless Seer 11.01.2013 07:19
quelle
2

Versuchen Sie, die Klasse Serializable der Klasse Officers hinzuzufügen. Alles, was darin ist, ist jetzt serialisierbar, und wenn das die Klasse ist, die das Problem verursacht, wird das Problem behoben.

Hinzufügen zur Antwort, da OP nicht geholfen hat, aber normalerweise wird eine nicht serialisierbare Ausnahme verursacht, weil das Objekt nicht als Serializable markiert ist.

Gerade im Code bemerkt, dass Ihr sql 'poisitionId' verwendet, aber Ihr addValue 'positionId' verwendet. Vielleicht verursacht dieses Missverhältnis Ihr Problem?

    
Mikezx6r 04.10.2012 19:21
quelle
2

Hi, ich hatte das gleiche Problem wie du.

Ich benutze zur Zeit Frühling 3.2 und es sieht so aus, als ob Sie in dieser Version die Klasse NamedParameterJdbcTemplate anstelle von JdbcTemplate verwenden müssen. Dadurch löst es mein Problem.

Wenn Sie von JdbcDaoSupport aus erweitern, verwenden Sie NamedParameterJdbcDaoSupport anstelle von diesem. In dieser Klasse haben Sie sowohl eine jdbcTemplate als auch eine NamedParameterJdbcTemplate

    
Diego Wong 15.03.2013 14:47
quelle
1

Abgesehen von jeder Ausnahme, die in Ihrem Codeblock auftreten kann, drucken Sie nur die Nachricht der ausgelösten Ausnahme aus und verlieren so den Stacktrace, der Sie zum Ursprung Ihrer Exception führt.

Da Spring nur RuntimeException(s) auslöst, können Sie Ihre Ausnahmebehandlung entfernen und einen Blick auf den Stacktrace werfen, der Ihnen mehr über das Objekt sagt, das nicht serialisierbar ist. Als Alternative können Sie die Anweisung logger.info(e.getMessage()); in der Ausnahmebehandlung durch logger.error("Could not save officer.", e); ersetzen, vorausgesetzt, Sie verwenden log4j. Es wird Ihnen mehr über den Fehler als nur die Nachricht der Wrapping-Ausnahme erzählen.

Wenn Sie Ihren Code betrachten, kann ein Kandidat, der diese Ausnahme verursacht, die Klasse Officers sein. Versuchen Sie, es in der Sitzung zu speichern?

    
stefanglase 04.10.2012 19:16
quelle
0
%Vor%     
Adrian Adamczyk 04.10.2012 19:23
quelle

Tags und Links