`
fengyaodong
  • 浏览: 143661 次
  • 性别: 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>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics