现在还不知道原因出在哪里!因我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 以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle...
在hibernate中实现oracle的自动增长
oracle序列主键自增长实现主键自动增长
oracle创建表时主键自动增长方法 5 测试反复执行如下语句:insert into Test_Increase(Username) values('test')6 查看插入结果:userid username1 test2 test3 test4 test5 test6 test7 test8 test9 test
在 Oracle 数据库中,主键自动生成是指在插入数据时自动生成唯一的主键值,从而简化数据录入和维护工作。下面将详细介绍 Oracle 数据库主键自动生成的实现方法和相关知识点。 序列(Sequence) 序列是一种数据库...
( 使用powerdesigner创建oracle_数据库表,设置表主键列为自动增长.doc )
oracle设置主外键即主键序列自动增长
Oracle数据库创建表tuser设置主键自动增长,先创建表,然后创建基于该表的队列。
关于oracle数据库连接报错,错误代码“ORA-01034”和“ORA-27101”,然后问题进一步出现,错误“ORA-03113:通信通道的文件结尾 进程 ID:6320 回话 ID :191 序列号:3”
教你如何使用oracle中的sequence,实现主键自动增长
Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。 Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence) ...
Oracle 登录 报错No matching authentication protocol 文档
oracle 创建id主键序列的 脚本 及 使用方式 oracle 创建id主键序列的 脚本 及 使用方式
ORACLE启动报错常见问题解决
一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列seq_users ...order ##确保按照请求次序生成整数 【不常用的设置】.只有在使用Real Application Cluster(RA
oracle数据库id为uuid类型时自动生成id的工具类,不再依赖sequence自增长
记录了Oracle的详细报错信息,为您提供最好的指导思想。