hibernate uuid.hex主键生成+spring带来的困惑

原创 2006年06月15日 11:25:00
第二次插入就报错?


表结构

CREATE TABLE `cloumn` (
  `c_id` 
varchar(16)  NOT NULL,
  `u_id` 
varchar(16)  default NULL,
  `c_name` 
varchar(100default NULL,
  `c_sort` 
int(11default NULL,
  `c_beizhu` 
varchar(100) ,
  
PRIMARY KEY  (`c_id`)
 
)

2.配置文件
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
                            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" 
>

<hibernate-mapping>
<class
    
name="hibernate3test.dal.Cloumn"
    table
="cloumn"
>
    
<id name="cid" type="java.lang.String" column="c_id" >
//uuid.hex生成方式
        
<generator class="uuid.hex" />
    
</id>
    
<property name="u_id" type="java.lang.String" column="u_id" />
    
<property name="cname" type="java.lang.String" column="c_name" />
     
<property name="csort" type="java.lang.Integer" column="c_sort" />
      
<property name="cbeizhu" type="java.lang.String" column="c_beizhu" />

</class>
</hibernate-mapping>

spring配置文件
    <bean id="test" class="hibernate3test.dal.dal">
      
            
<property name="sessionFactory"><ref local="sessionFactory"/></property>   
    
</bean>


vo
public class Cloumn implements Serializable {

    
private String cid;
    
private String u_id;
    
private String cname;
    
private Integer csort;
    
private String cbeizhu;
    
public Cloumn() {
    }

//geter setter


dao 代码
package hibernate3test.dal;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class dal extends HibernateDaoSupport {
    
public dal() {
    }

    
public void addCloumn()
    
{
        Cloumn cc 
= new Cloumn();
        cc.setU_id(
"297ebd930b46197a");
        cc.setCname(
"测试添加拦目1");
        cc.setCbeizhu(
"备注");
        cc.setCsort(
1);
        
this.getHibernateTemplate().save(cc);
    }


测试
    public static void main(String args[])
    
{
   
//加载spring配置文件
               Resource rs=new ClassPathResource("appcontext.xml");
        BeanFactory factory
=new XmlBeanFactory(rs);
//得到dal
        dal dao=(dal)factory.getBean("test");
//添加
       dao.addCloumn();
       
//第二次再次添加就报错..??
       
//dao.addCloumn();
    }



怎么会这样,第一次可以添加进数据库,第二次再调用dao.addCloumn()就报错?

这样做应该是没有问题的啊??
注:
我单独用hibernate测试没有问题,加上spring 问题就来了。。

以下是hibernate测试代码(通过)
//得到session
public Session getSession()
{
try
{
Configuration cfg = new Configuration().configure();
SessionFactory sf=cfg.buildSessionFactory();
return sf.openSession();
}
catch(Exception ee)
{
log.error("error:"+ee.getMessage());
}
return null;
}

//添加的方法
public void addCloumn()
{
Cloumn cc = new Cloumn();
cc.setU_id("297ebd930b46197a");
cc.setCname("测试添家拦目1");
cc.setCbeizhu("备注");
cc.setCsort(1);
Session ss=this.getSession();
ss.save(cc);
ss.flush();
ss.close();
}

public static void main(String[] args) {
dao test = new dao();
//添加
test.addCloumn();
再次添加
test.addCloumn();

}

这样没有问题。。

加了spring就有问题。

uuid.hex主键生成器

对于数据库主键生成策略,大家都了解一些,尤其是关于hibernate的主键生成更是方便很多。 而大多数人只知道使用,hibernate给定的生成策略,我今天想说的是主键生成器,就是自己写一个类来生成...
  • lushuaiyin
  • lushuaiyin
  • 2013年02月19日 14:24
  • 4135

uuid.hex主键生成器

对于数据库主键生成策略,大家都了解一些,尤其是关于hibernate的主键生成更是方便很多。 而大多数人只知道使用,hibernate给定的生成策略,我今天想说的是主键生成器,就是自己写一个类来生成主...
  • qq_39595769
  • qq_39595769
  • 2017年11月17日 13:16
  • 133

hibernate自定义主键生成策略

package cn.silvernet.util; import java.io.Serializable; import java.util.UUID; import org.hibernat...
  • u011572579
  • u011572579
  • 2015年08月03日 17:59
  • 2035

hibernate主键生成机制

Hibernate主键生成机制 1.increment 由 Hibernate 以递增的方式为代理主键赋值 Hibernate 会先读取 NEWS 表中的主键的最大值, 而接下来向 NEWS 表中...
  • u011202489
  • u011202489
  • 2016年03月31日 15:20
  • 860

hibernate5(5)实体映射注解配置[2]主键生成策略

@GeneratedValue基本注解类型在上一篇文章中,我们讲到了JPA使用@GeneratedValue注解来定义生成策略,而关于注解生成策略有4种基本支持类型: 1. GenerationT...
  • qwe6112071
  • qwe6112071
  • 2016年03月30日 12:52
  • 3220

JPA 菜鸟教程 19 jpa uuid主键生成策略

ddl语句 CREATE TABLE `t_user` ( `id` varchar(32) NOT NULL, `name` varchar(255) DEFAULT NULL, ...
  • JE_GE
  • JE_GE
  • 2017年01月03日 21:31
  • 1671

”伪集群“导致的Hibernate主键increment生成策略异常

一、问题描述: 一个小型WEB应用,单点部署(一份Tomcat+一份MySQL),无集群需求。 有一张数据表的主键使用Hibernate的increment生成策略: 但当有多人在同...
  • coderAndy
  • coderAndy
  • 2016年03月27日 12:00
  • 1587

使用注解风格学习Hibernate和JPA的主键生成策略

主键是关系数据库中的一个基本概念,它用来保证记录的唯一性。简单来说,就是同一张数据库表中,不允许存在多条相同主键的记录。主键生成策略,就是当向数据库表中插入记录的时候,这个记录的主键该如何生成。绝大部...
  • z69183787
  • z69183787
  • 2014年06月30日 21:57
  • 13924

UUID做主键,好还是不好?这是个问题。

转自:http://mlxia.iteye.com/blog/279059 我唯一还算熟悉的数据库就算是MySQL了,大概使用MySQL的人,百分之九九以上的人会使用Autoincrement ID做...
  • chelen_jak
  • chelen_jak
  • 2015年05月15日 11:29
  • 1026

hibernate注解(annoation)使用id主键生成策略

hibernate注解(annoation)使用id主键生成主要要使用到以下几个注解: @Id,@GeneratedValue,@GenericGenerator. ,@GeneratedValue的...
  • shendeguang
  • shendeguang
  • 2015年08月25日 13:59
  • 9062
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate uuid.hex主键生成+spring带来的困惑
举报原因:
原因补充:

(最多只允许输入30个字)