`
fengyaodong
  • 浏览: 147060 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle 主键ID自动增长 hibernate 不能插入并报错的问题!

    博客分类:
  • Java
阅读更多

现在还不知道原因出在哪里!因我hibernate 先查询 ID的最大值!然后进行插入!但是我还没有找到更好的方法 来解决这个问题!所以我自己写了一个 saveDAO()方法,来代替hibernate 自动生成的saveDAO,代码如下:

 

package com.ccu.util;

public class LeibieDAO extends BaseHibernateDAO {
 private static final Log log = LogFactory.getLog(LeibieDAO.class);
 public static final String CLASSES_NAME = "classesName";
 
 public void save(Leibie leibie){
  String sql = "insert into leibie (classes_name)values('"+leibie.getClassesName()+"')";//由leibie 类获取值
  Session session = HibernateSessionFactory.getSession();
  Transaction tx = session.beginTransaction();
  Connection conn = session.connection();  // 获取hibernate的  Connection 
  try {
   System.out.println(leibie.getClassesName());
   PreparedStatement psmt = conn.prepareStatement(sql);
   psmt.executeQuery(sql);
   tx.commit();
  } catch (SQLException e) {
   tx.rollback();
   e.printStackTrace();
  }
  finally{
        if (conn != null) {
      try {
       conn.close();
      }
      catch(SQLException sqlex){
       System.err.println(this.getClass().getName() + ".mymethod - 不能关闭数据库连接: " + sqlex.toString());
      }
      }
        }

 }

 

}

 

 

现在解决了! 在Google上了一个国外的网站 还有群里的一位兄弟提出来 正好相对!呵呵 真正的原因还是对hibernate没有充分的了解!

 

<hibernate-mapping>
 <class name="com.ccu.util.Leibie" schema="SCOTT" table="LEIBIE">
  <id name="id" type="java.lang.Long">
   <column name="ID" precision="22" scale="0"/>
   <generator class="sequence">
    <param name="sequence">SCOTT.LEIBIE_S_ID</param>         就是少了这一句!

                                                                                                        SCOTT.LEIBIE_S_ID序列名
   </generator>
  </id>
  <property generated="never" lazy="false" name="classesName" type="java.lang.String">
   <column length="200" name="CLASSES_NAME"/>
  </property>
 </class>
</hibernate-mapping>

分享到:
评论

相关推荐

    oracle主键自动增长

    ### Oracle主键自动增长知识点详解 #### 一、Oracle序列(Sequence)的使用方法 在Oracle数据库中,并没有像MySQL那样的自动增长字段特性,因此在实际应用中,我们常常需要手动实现这一功能。序列(Sequence)是...

    oracle设置主键自动增长

    ### Oracle 设置主键自动增长详解 #### 一、概述 在数据库设计中,为了方便管理和维护数据表,经常需要为主键设置自动增长的功能。Oracle 数据库提供了强大的工具和语法支持来实现这一需求。本文主要介绍如何在 ...

    oracle触发器实现主键自动增长

    在Oracle数据库中,实现主键自动增长是一种常见的需求,尤其在设计高并发、大数据量的系统时,确保每个记录都有一个唯一且连续的标识符变得至关重要。本文将深入探讨如何利用Oracle触发器来实现这一功能,同时也会...

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    ### PowerDesigner 创建 Oracle 数据库表并设置主键自动增长 #### 一、PowerDesigner与Oracle数据库集成概述 PowerDesigner是一款强大的数据库设计工具,它能够帮助开发者进行数据建模、概念设计以及物理数据库的...

    oracle序列主键自增长

    为了实现主键自动增长,Oracle提供了序列(Sequences)这一特性,它能按照预设的规则(通常是递增)生成唯一的整数。本文将深入探讨Oracle序列主键自增长的工作原理、创建方法以及如何在表中应用。 **1. Oracle序列...

    oracle设置主外键即主键序列自动增长

    由于 `groupinfo_id` 是主键并启用了自动增长,因此在插入数据时不需要指定 `groupinfo_id` 的值,系统会自动为其分配一个唯一的ID。 ##### 2. 查询数据 ```sql SELECT * FROM groupinfo; ``` 执行查询后,可以查看...

    在hibernate中实现oracle的自动增长

    在Hibernate中利用Oracle的序列(sequence)实现自动增长,不仅可以简化主键管理,还能提高数据一致性和安全性。通过在Hibernate映射文件中正确配置序列生成器,可以确保每个实体都有一个唯一的标识符,同时避免了手动...

    oracle主键自动增长方法

    oracle创建表时主键自动增长方法 5 测试反复执行如下语句:insert into Test_Increase(Username) values('test')6 查看插入结果:userid username1 test2 test3 test4 test5 test6 test7 test8 test9 test

    oracle数据库主键自动生成

    在 Oracle 数据库中,主键自动生成是指在插入数据时自动生成唯一的主键值,从而简化数据录入和维护工作。下面将详细介绍 Oracle 数据库主键自动生成的实现方法和相关知识点。 序列(Sequence) 序列是一种数据库...

    Oracle数据库创建表tuser设置主键自动增长

    本文将详细介绍如何在Oracle环境中创建一个名为`tuser`的表,并实现其主键自动增长的功能。此外,还将介绍如何通过序列(sequence)来管理这个自动增长的主键值。 #### 一、创建表tuser 首先,我们需要定义`tuser`表...

    hibernate中自动生成主键的办法

    综上所述,Hibernate提供了丰富的主键生成策略,涵盖了从简单的自动增长到复杂的分布式唯一ID生成。开发者应根据具体的应用需求和数据库特性,选择最合适的主键生成策略,以确保系统的稳定性和性能。无论是追求高...

    oracle 创建id主键序列 脚本

    这样,当向`table_name`插入新记录时,如果没有为`id`字段提供值,Oracle会自动使用`seq_id`序列的下一个值。 总结来说,Oracle序列是实现主键自增的有效工具,通过创建和管理序列,可以确保数据的唯一性和有序性。...

    hibernate映射主键生成策略native

    虽然`&lt;param name="sequence"&gt;CREDIT_RECORD_id&lt;/param&gt;`在这个上下文中并不生效,但其含义是在使用特定于Oracle的sequence策略时指定序列名。实际上,在使用“native”策略时,Hibernate会根据当前数据库环境自动...

    oracle详细报错信息

    当Oracle遇到问题时,报错信息通常是解决问题的关键线索。"ora92errmsg.chm"这个文件名暗示它是一个帮助文件,可能包含了Oracle 9i(版本9.2)的错误消息集。Oracle的错误消息通常包含错误代码、错误描述以及可能的...

    Hibernate主键生成方式

    在Java的持久化框架Hibernate中,主键生成策略是一个关键的概念,它决定了如何为数据库中的实体对象生成唯一的标识符(主键)。以下是关于Hibernate主键生成方式的详细说明: 1. **Identity方式**:`...

    hibernate自动增长字段

    这段脚本创建了一个全局的`SEQUENCE` `hibernate_sequence`,并为`STAFF`表定义了一个触发器,该触发器会在每次插入新记录前为其分配一个新ID。 ##### 3.2 Hibernate配置文件 Hibernate映射文件中使用`native`策略...

    Oracle插入数据时获取自增ID

    通过序列和触发器,Oracle可以很好地支持在插入数据时自动生成并获取ID的需求。这种方式不仅提高了数据的一致性和安全性,还简化了开发过程中的代码编写工作。同时,对于需要获取刚插入数据ID的应用场景,`CURRVAL`...

Global site tag (gtag.js) - Google Analytics