2016-08-05 4 views
0

私はユーザークラスがあります。HibernateでXMLから主キーを生成する方法は?

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 

私はIDを生成するためにHibernateを設定します。私はここで何が欠けていますか?あなたがUSER_ID列

ALTER TABLE users ADD USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT; 

native命令にautoincrementを設定する必要が

答えて

2

は、データベースがIDを生成するための責任を得ることを意味します。データベース側でIDを生成する戦略を設定していないので、例外java.sql.SQLException: Field 'USER_ID' doesn't have a default valueがあります。

関連する問題