java - oracle中如何向已有的自增表插入一行?

标签 java sql oracle hibernate hibernate-annotations

我使用 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/

相关文章:

java - 在对网站进行负载测试时我应该忽略 Java 脚本吗?

python - 带有多表查询的SQL的Django views.py版本

php - 具有大数据集的 MySQL 关系数据库?

database - 将字段设置为可为空 - Oracle Data Modeler

python - "error: cannot locate an Oracle software installation"尝试安装 cx_Oracle 时

java - 在java中将int[]二进制数组转换为图像。

java - 构造函数给我的参数列表长度不同

java - 默认情况下将jTextArea设置为visible false

mysql - SQL 按日期字段上的月份分组

SQL ORACLE ORA-00969 : missing ON keyword?