Caused by: java.sql.SQLException: Field 'kinds' doesn't have a default value

错误信息如下:

Caused by: java.sql.SQLException: Field 'kinds' doesn't have a default value
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
	at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1169)
	at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:693)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1404)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1318)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1303)
	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:147)
	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
	... 45 more

解决方案:

原来是.hbm.xml文件的设置问题,在里面把主键的属性改为:

<generator class="assigned"/>  

  1. 再运行就可以了。因为assigned是指主键是由人工分配的,而native则指主键值由库自动给出。我以前都是想都没想就加上native的,反正也不知道什么意思,而且以前用到要插入数据的表,主键都是“auto increment”的,所以也没碰到问题。这次就暴露了。

    总结一下:其实就是缺乏对Hibernate的全面理解,没有完全掌握它的各种设置。因为当初学hibernate也是抱着"需求"学的,而不是正儿八经学习它的,没有完全理解各种设置就上手了。

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/84423238