繁体   English   中英

如何在Hibernate中从XML生成主键?

[英]How generate the primary key from XML in Hibernate?

我有一个用户类:

public class User{
    private Long userId;
}

我在xml中使用它:

<id name="userId" type="long" unsaved-value="null">
        <column name="USER_ID" not-null="true" />
        <generator class="native" />
</id>

但是,当我尝试保存用户对象而不将userId分配给对象时,出现以下错误:

Caused by: java.sql.SQLException: Field 'USER_ID' doesn't have a default value
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
    at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5094)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)
    ... 22 more

我希望Hibernate为我生成ID。 我在这里想念什么?

您需要为USER_ID列设置autoincrement

ALTER TABLE users ADD USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT;

native指令意味着您的数据库负责生成ID。 由于未在数据库侧设置策略来生成ID,因此出现异常java.sql.SQLException: Field 'USER_ID' doesn't have a default value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM