hibernate - Spring Boot insert invalid datetime into MariaDB results in null, on not nullable field -
i have problem in spring boot project, have table created this:
create table task ( id int auto_increment primary key, title varchar(50) not null, content text not null, control_time datetime not null, ); and entity this:
@entity data class task( @id @generatedvalue var id: long = 0, @column(length = 50) var title: string = "", @column(columndefinition = "text", length = 65535) var content = "", @temporal(temporaltype.timestamp) var controltime: date = date()) i have endpoint takes task parameter, jackson converts json task object, works fine looking @ debug logs.
so problem if give date outside legal range(eg. above year 9999), hibernate persists without error, field ends containing null, shouldn't possible when it's not nullable field. assume mariadb throws error if persist outside legal range, when manually, somehow hibernate manages it, , ends being null.
trace hibernate:
26543 --- [nio-8080-exec-1] o.h.p.entity.abstractentitypersister : dehydrating entity: [something.model.task#<null>] 2017-08-15 14:28:22.220 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [1] [timestamp] - [tue aug 15 14:28:22 cest 2017] 2017-08-15 14:28:22.221 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [2] [varchar] - [niklas] 2017-08-15 14:28:22.221 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [3] [timestamp] - [null] 2017-08-15 14:28:22.222 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [4] [timestamp] - [null] 2017-08-15 14:28:22.222 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [5] [varchar] - [null] 2017-08-15 14:28:22.222 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [6] [timestamp] - [null] 2017-08-15 14:28:22.222 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [7] [bigint] - [null] 2017-08-15 14:28:22.222 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [8] [varchar] - [] 2017-08-15 14:28:22.223 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [9] [timestamp] - [mon sep 10 05:06:44 cest 12439173] 2017-08-15 14:28:22.224 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [10] [boolean] - [null] 2017-08-15 14:28:22.224 trace 26543 --- [nio-8080-exec-1] o.h.type.descriptor.sql.basicbinder : binding parameter [11] [varchar] - [] 2017-08-15 14:28:22.228 debug 26543 --- [nio-8080-exec-1] o.h.id.identifiergeneratorhelper : natively generated identity: 2 2017-08-15 14:28:22.228 trace 26543 --- [nio-8080-exec-1] o.h.r.j.i.resourceregistrystandardimpl : releasing result set [org.mariadb.jdbc.internal.queryresults.resultset.mariaselectresultset$1@1c4fe495] 2017-08-15 14:28:22.228 debug 26543 --- [nio-8080-exec-1] o.h.r.j.i.resourceregistrystandardimpl : hhh000387: resultset's statement not registered 2017-08-15 14:28:22.228 trace 26543 --- [nio-8080-exec-1] o.h.r.j.i.resourceregistrystandardimpl : closing result set [org.mariadb.jdbc.internal.queryresults.resultset.mariaselectresultset$1@1c4fe495] 2017-08-15 14:28:22.228 trace 26543 --- [nio-8080-exec-1] o.h.r.j.i.resourceregistrystandardimpl : releasing statement [hikariproxypreparedstatement@639958422 wrapping sql : 'insert task (created_at, created_by, deleted_at, updated_at, updated_by, closed_at, closed_by, content, control_time, is_successful, title) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', parameters : ['2017-08-15 14:28:22.147','niklas',<null>,<null>,<null>,<null>,<null>,'','12439173-09-10 05:06:44.928',<null>,'']] 2017-08-15 14:28:22.229 trace 26543 --- [nio-8080-exec-1] o.h.r.j.i.resourceregistrystandardimpl : closing prepared statement [hikariproxypreparedstatement@639958422 wrapping sql : 'insert task (created_at, created_by, deleted_at, updated_at, updated_by, closed_at, closed_by, content, control_time, is_successful, title) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', parameters : ['2017-08-15 14:28:22.147','niklas',<null>,<null>,<null>,<null>,<null>,'','12439173-09-10 05:06:44.928',<null>,'']] 2017-08-15 14:28:22.229 trace 26543 --- [nio-8080-exec-1] o.h.e.jdbc.internal.jdbccoordinatorimpl : starting afterquery statement execution processing [on_close] 2017-08-15 14:28:22.231 debug 26543 --- [nio-8080-exec-1] o.h.e.t.internal.transactionimpl : committing 2017-08-15 14:28:22.231 trace 26543 --- [nio-8080-exec-1] cresourcelocaltransactioncoordinatorimpl : resourcelocaltransactioncoordinatorimpl#beforecompletioncallback 2017-08-15 14:28:22.231 trace 26543 --- [nio-8080-exec-1] org.hibernate.internal.sessionimpl : sessionimpl#beforetransactioncompletion() 2017-08-15 14:28:22.232 trace 26543 --- [nio-8080-exec-1] org.hibernate.internal.sessionimpl : automatically flushing session 2017-08-15 14:28:22.232 trace 26543 --- [nio-8080-exec-1] o.h.e.i.abstractflushingeventlistener : flushing session i don't know how bold relevant parts, can see inserts datetime "12439173-09-10 05:06:44.928" without complaining. when in database value of "control_time" null.
has ever encountered problem, or know how happen?
edit: there mismatches between entity in definition , hibernate trace, because definition simplified.
Comments
Post a Comment