使用hibernate和oracle时某字段比如id要自增,在配置文件中怎么设置?

发布时间:2024-05-18 15:47 发布:上海旅游网

问题描述:

在oracle中使用触发器bbb和序列aaa已经把id设置成自增了。测试了下,没问题。
现在的问题是在xxx.hbm.xml的文件中关于id的那块怎么设置?

补充下:本来这个例子程序是连接sql server 2000的我把它改成了oracle的,现在登陆没问题,就是插入有问题,我一插,在tomcat中就提示“SQL 命令未正确结束”,我是个新手,我是怀疑sql语句的问题,可我找不到具体的语句,找到了歌getHibernateTemplate().save(object);,我估计这就是最低层的语句了。所以我只能怀疑是id自增的问题。

原始id那块的代码如下(那是连接sql server 2000的):

<hibernate-mapping>
<class name="com.wy.form.DepartmentForm" table="tb_department">
<id name="id" type="java.lang.String">
<column name="id" />
<generator class="native"/>
</id>
。。。。。。。。

看看怎么去改一下。

我是新手,能力太弱,麻烦大家了!!!!!请给个具体代码。若是我提供的信息太少,请给我发消息。

问题解答:

不要把ID设为主键,插入时用HQL实现,不要用getHibernateTemplate().save(object)

因为hibernate的主键生成机制和数据库的触发器操作相同目标产生的错误

所以,
先删除触发器,修改主键的类型为int

<id name="id" type="java.lang.String">
<column name="id" />
<generator class="native"/>
</id>
修改为:
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="sequence"/>
</id>

<generator class="native"/>改成<generator class="uuid"/>就没有问题了

id是数据库自增的,你怎么定义成了 string类型

<id name="id" type="java.lang.String">
<column name="id" />
<generator class="native"/>
</id>

把 <generator class="native"/> 改为 <generator class="increment"/> 试试看

<id name="id" type="java.lang.String">
<column name="id" />
<generator class="native"/>
</id>
去掉type

热点新闻