数据库问题ConstraintViolationException: could not insert

org.springframework.dao.DataIntegrityViolationException: could not insert: [com.integration.entity.User]; SQL [insert into USER1 (NAME, PASSWORD, TYPE) values (?, ?, ?)]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not insert: [com.integration.entity.User]

出现这种错误的原因在于ConstraintViolationException,即违反约束异常,原来在这个user1表中,还有一个主键ID,这个主键必须是非空而且唯一的,但插入数据的时候只插入了三列,出现这种异常的原因就在于user.hbm.xml文件配置的错误,如果是oracle数据库,将文件中的内容更新为如下即可。

<class name="com.integration.entity.User" table="USER1">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="11" scale="0" />
<generator class="increment" />

时间: 2024-12-21 20:07:31

数据库问题ConstraintViolationException: could not insert的相关文章

数据库的增删查改insert,delete,select,update

insert:一般只要参数个数和类型没问题,不会插入异常 INSERT INTO t_pos_dynamic_map(autoid, lt_termno, lt_merchno) VALUES(SEQ_Pos_dynamic_Map_Autoid.NEXTVAL, lTradeInfo.Ltl_Termno, lTradeInfo.Ltl_Merchno); delete: delete from nac_user.t_nac_route_log        删除整表记录,可回滚还原 trun

org.hibernate.exception.ConstraintViolationException: could not insert:

报错原由于xxx.hbm.xml文件里的主键类型设置有问题: 当我们的数据库表没实用自增长的int型id.而用的varchar就可能报上面的错误, 假设,主键的生成类型设置为identity或者native的时候底层数据库会自己主动生成一个long,short或者是int,假设ID设计的是用String,数据库就无法插入的,所以假设你的数据库的ID设计的是用String型的,最好是用assigned. 比如: <id name="userId" type="java.l

oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别

create table  as select * from和insert into select from两种表复制语句区别 [sql] view plain copy create table targer_table as select * from source_table insert into target_table(column1,column2) select column1,column2 from source_table 以上两句都是将源表source_table的记录插

关于各种数据库 Insert时同时取到Id的操作

对数据库的操作,在Insert的同时获取到Id,保证原子性操作.而不是,先取Id,然后再插入到数据库等操作. Oracle: 使用Oracle自带的 Returning into 语句,具体代码示例如下: 1 sql = @"INSERT INTO KEYWORD(KEYWORD_ID,SITE_ID,KEYWORD_NAME,STATUS,SOURCE,CREATE_TIME,LAST_CHANGED) 2 VALUES 3 ( 4 KEYWORD_SEQ.nextVal, 5 :SITE_I

MySQL数据库应用(8)DML语句之insert知识

一.往表中插入数据 1.命令语法: insert into <表名> [(<字段名1>[,..<字段名n>])] values (值1)[,(值n)] 2.新建一个简单的测试表test create table `test`( `id` int(4) not null auto_increment, `name` char(20) not null, primary key (`id`) ); 3.往表中插入数据的不同的语法例子: 1)按规矩指定所有列名,并且每列都插入

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =

Android 使用存放在存assets文件夹下的SQLite数据库

因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机自身的存储上之后再使用,后来考虑到每次都拷贝的话效率不高,并且如果涉及到对数据库的修改操作的话拷贝之后数据就被恢复了. 因此就写了该封装,该封装只是在第一次使用数据库文件的时候把该文件夹拷贝到手机的/data/data/应用程序报名/database文件夹下,之后就直接从这个地方使用了.并且它允许你

【转】Qt数据库总结

转自:http://blog.chinaunix.net/uid-25201977-id-3014100.html #include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  采用QSQLITE数据库,QMYS

查询数据库

一.多表查询 语法:select * from 表名1,表名2 where 条件表达式(主键 = 外键)order by 排序 主键:必须有值(不为null)且不重复,可以用作当前行的标识 主键 = 外键:当前表中的外键必须是另一张表的主键 1.1内联查询 (where条件中的内容:主键 = 外键) 查询结果中,主键中有,外键中也有的值都会查询得到,主键中没有而外键中有的值不会查 询得到 例:查询出雇员的编号.雇员姓名.部门编号.部门名称及部门位置 selecte.empno,e.ename,d