2017-06-08 1 views
0

Ich erhalte eine Ausnahme beim Einfügen eines Datensatzes in eine Tabelle, die mit MyBatis (MyBatis-3.1.1jar) über Annotationen konfiguriert wurde.MyBatis Einfügen und kein Return-Schlüssel: Fehler beim Generieren des Schlüssels oder beim Setzen des Ergebnisses zum Parameterobjekt

Nun, die Tabelle hat nur zwei Spalten.

Table EMLSIGNUP(
employeeName varchar(25) 
country varchar(25) 
) 

Und ich verwende POJO-Klasse, um Datensätze einzufügen.

public class EmailBean{ 
private String employeeName; 
private String country; 
…getters and setters.. 
} 

Und im Mapper ich füge so ein. wir

@Insert("INSERT INTO EMLSIGNUP(employeeName,COUNTRY,) " + 
     "VALUES (#{employeeName ,jdbcType=VARCHAR}, #{country ,jdbcType=VARCHAR})") 
public void insertEmail(EmailBean emailBean); 

Die Ausnahme ist

caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: java.lang.NullPointerException 

es sieht für einige Primärschlüssel Es scheint, die ich nicht so gut wie in der POJO Klasse in der Datenbank definiert und

Seit der Audit-Tabelle Ich möchte nicht, dass ein Primärschlüssel in der Tabelle vorhanden ist. Als Benutzeranmeldung zu unserer Anwendung speichern wir seinen Namen und sein besuchtes Land.

Antwort

0

Bitte entfernen Sie das zusätzliche Komma:

@Insert("INSERT INTO EMLSIGNUP(employeeName,COUNTRY) " + 
     "VALUES (#{employeeName ,jdbcType=VARCHAR}, #{country ,jdbcType=VARCHAR})") 
public void insertEmail(EmailBean emailBean); 
0

Ich hatte das gleiche Problem und es war, weil wir die falsche Version von JDBC-Treiber verwendet haben.

In meinem Fall war es Oracle, wir verwendeten ojdbc für 12c, während die Datenbankversion noch 11g war.

Also die korrekte Version von ojdbc behoben das Problem.

Ich hoffe, es hilft.

Verwandte Themen