gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:26:37 24 4
gpt4 key购买 nike

我有一个用户类别:

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 列设置自动增量

ALTER TABLE users ADD USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT;

native 指令意味着您的数据库负责生成 id。因为您没有设置在数据库端生成 id 的策略,所以出现异常 java.sql.SQLException: Field 'USER_ID' does not have a default value

关于java - 如何在 Hibernate 中从 XML 生成主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38784339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com