关于hibernate主键生成策略报错

问题描述

向数据库表中插入数据保存操作时报错,信息如下:org.hibernate.HibernateException:Thedatabasereturnednonativelygeneratedidentityvalueatorg.hibernate.id.IdentifierGeneratorFactory.getGeneratedIdentity(IdentifierGeneratorFactory.java:33)atorg.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1970)atorg.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2405)atorg.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37)atorg.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)atorg.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269)atorg.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167)atorg.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101)atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:98)atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)atorg.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:502)atorg.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:494)atorg.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:490)

hibernate映射文件主键配置如下:<idname="id"type="int"column="ID"><generatorclass="native"><paramname="sequence">SEQ_SYSTEM_DEPARTMENT</param></generator></id>

数据库中自动生成我已经选择:数据库是mysql

解决方案

解决方案二:
因为mysql中没有sequence,我去掉<paramname="sequence">SEQ_SYSTEM_DEPARTMENT</param>之后还是不行。

时间: 2024-08-04 07:08:00

关于hibernate主键生成策略报错的相关文章

hibernate主键生成策略-为什么我的程序只有native方式生效(注解)

问题描述 hibernate主键生成策略-为什么我的程序只有native方式生效(注解) 我想采用uuid主键策略,但是多次各种尝试都不成功.我是通过往数据库插入数据测试的.重点是使用native能正常插入数据,而使用uuid就不行,主要原因是整个程序也不报错,就是运行了,看起来就像是跳过执行插入语句一样,实际上是执行到了插入方法的,也没有堆栈信息什么的可参考.代码如下: @Id @GeneratedValue (generator = "paymentableGenerator" )

常用Hibernate主键生成策略

今天学习到了关于Hibernate主键生成策略的问题,总结下,不足之处,请大家指出. Hibernate为优秀的持久层框架的代表.在传统的JDBC+JavaBean操作中,实体对象都由程序员自己去封装,然后返回.而在Hibernate中,采用对象关系映射『ORM』,大大简化了对数据库的操作. 在数据库的设计和操作中,我们通常会给表建立主键.主键,可以分为自然主键和代理主键. 自然主键表示:采用具有业务逻辑含义的字段作为表的主键.比如在用户信息表中,采用用户的身份证号码作为主键.但是这样一来,随着

hibernate主键生成策略identity··为什么加入的第一个数据主键一直是0

问题描述 hibernate主键生成策略identity··为什么加入的第一个数据主键一直是0 从0开始没有1····· 解决方案 配置问题..............................

hibernate主键生成策略

问题描述 hibernate主键生成策略 最开始程序是oracle的 用的主键生成策略当然是序列 但以后可能需要兼容各种数据库所以把主键测试改为GenerationType.AUTO 改了之后再mysql中没任何问题 但在oracle中新增数据的时候一直都是ORA-00001: 违反唯一约束条件 (CREDITV2.SYS_C005464)这个错误.我猜测是主键重复了 请问怎么样的主键策略可以兼容多种数据库, 并兼容手动添加数据到表之后的主键, 兼容多种数据库数据互相导出导入

Hibernate主键生成策略总结(这里面讲的很详细)

 Hibernate提供的主键生成策略,使我们可以在实体类的映射xml文件中设定关键字来告诉hibernate我们要使用的主键生成方式,然后hibernate会根据设定完成数据库的主键控制. 一.首先通过举例子来了解实体映射文件(*.hbm.xml)中对id生成策略配置格式     用户User的实体类User.java      [java] view plaincopyprint? package com.bjpowernode.hibernate;    import java.util.

Hibernate 主键生成策略问题

问题描述 在一对一的关系中,我希望两边都使用主键作为外键关联,使用xml配置可以实现,但是用了注解却不可以:请教各位大侠,这个东东搞了一天.注解配置:@EntitypublicclassPerson{@Idprivateintid;privateStringname;@OneToOne(cascade=CascadeType.ALL)@PrimaryKeyJoinColumnprivateCardcard;......}@EntitypublicclassCard{@Id@GeneratedVa

mysql-MySQL不支持Hibernate的sequence主键生成策略吗?

问题描述 MySQL不支持Hibernate的sequence主键生成策略吗? 网上都说MySQL不支持Hibernate的sequence主键生成策略.为什么我的实体类使用JAP的@GeneralValue(好像是这个,没有指定生成策略)的时候,数据库会产生hibernate_sequence表?? 解决方案 hibernate主键生成策略值sequenceHibernate主键生成策略Hibernate主键生成策略

hibernate 的主键生成策略小结

                                                                          hibernate主键生成策略1,increment:以递增的方式生成OID,每次增加一(hibernate在执行插入语句之前会执行一次查询,查询的结果为这个表中的id的最大值,然后加1处理在绑定到这个insert语句中)  <id name="userid" type="java.lang.Long">  

【hibernate】主键生成策略使用UUID报出如下警告:org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC

主键生成策略使用UUID报出如警告如下: 控制台- 2017-11-24 18:40:14 [restartedMain] WARN org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values; consider using org.hibernate.id.UUI