我使用 hibernate 创建了我的数据库表,并且我的用户类有一个自动生成的 id,如下所示。
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_Id")
private int userId;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "password", nullable = false)
private String password;
我正在尝试从 Toad 控制台插入用户,并且我还手动添加了 user_id 值。当我想从我的应用程序插入新用户时,出现如下错误,
java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TDM.SYS_C001668192) violated
我必须使用过程从数据库插入一些值,那么如何使用现有序列或 ID(无论什么)插入新行?
更新:
感谢@Afridi,我解决了这个问题,如下所示。
首先,我给user_id添加了序列注释
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "t_user_id_seq_generator")
@SequenceGenerator(name = "t_user_id_seq_generator", sequenceName = "t_user_seq")
@Column(name = "user_Id")
private int userId;
之后我就这样调用它;
insert into t_user (user_id, username) values(T_USER_SEQ.nextval, 'newUser');
我检查了这个sql;
select * from user_sequences where sequence_name = 'T_USER_SEQ';
最佳答案
Hibernate 自动用 @GenerateValue
填充列标记。来自文档:
The @GeneratedValue annotation specifies that the entity identifier value is automatically generated using an identity column, a database sequence, or a table generator. Hibernate supports the @GeneratedValue mapping even for UUID identifiers.
您可以设置@GenerateValue
的类型。请参阅https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#identifiers-generators
关于java - oracle中如何向已有的自增表插入一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44016813/