Używam hibernacji do wstawienia do tabeli mysql, dla której wszystkie kolumny są zdefiniowane jako nie puste. Ma unikalny klucz podstawowy i inny unikalny indeks w kilku kolumnach.org.springframework.dao.DataIntegrityViolationException błędnie zgłaszająca przyczyna?
Dostaję następujący błąd:
org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [insert into MY_TABLE(col1, col2, col3, col4, ID_) values (?, ?, ?, ?, ?)]; constraint [null]
Ten błąd jest w dziennikach klienta i nie mogę odtworzyć problemu sam, więc nie mogę umieścić w debugowania, aby zobaczyć, jakie wartości są w instrukcja wstawiania.
Rozumiem, że "ograniczenie [null]" oznacza naruszenie "nie puste". Jednak patrząc na mój kod, nie widzę żadnego możliwego sposobu, aby którykolwiek z danych mógł mieć wartość zerową w momencie wstawienia, chyba że hibernacja próbuje wstawić identyfikator null (co byłoby bardzo złym błędem w hibernacji i tak się wydaje mało prawdopodobne).
Widzę jednak, jak to się dzieje, że naruszane są wyjątkowe ograniczenia. Czy to możliwe, że wiadomość wprowadza w błąd i rzeczywiście otrzymuję wyjątkowe naruszenie klucza? Czy "constraint [null]" zawsze oznacza naruszenie nie zerowe?
nie mogę odgadnąć, dlaczego ten wyjątek jest spowodowany chyba 'nie null' kolumna próbuje dać' wartość null'. BTW, jeśli używasz starszej wersji sterownika JDBC, nie zapomnij go zastąpić najnowszym (10+). W przeciwnym razie spowoduje to również inne problemy również później. – Lion
To jest mysql 5.1, a nie Oracle. – Dana