我正在开发一个使用oracle 11g,Java(struts2)和Hibernate的应用程序。Oracle休眠序列生成器问题
我有一个名为mytemp的表mytemp_id,其类型是NUMBER(22,0)。
在我mytemp.hbm.xml文件ID如下
<id name="mytempId" type="big_decimal">
<column name="MYTEMP_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">MYTEMP_TEMP_ID_SEQ</param>
</generator>
</id>
给定名为“MYTEMP_TEMP_ID_SEQ”的建立与甲骨文工作的罚款我Oracle数据库序列。
现在,当我尝试插入记录使用休眠,它给了我下面的错误
org.hibernate.id.IdentifierGenerationException:这个ID发生器长,整数,短期或串
似乎当我的序列返回Number时,hibenate认为它是BigDecimal,而hibernate的sequece生成器类只考虑long,integer,short和string的值。
Hibernate应该没有BigDecimal的问题。但我认为他们还没有实现序列生成器的BigDecimal
任何人都可以帮我解决这个问题吗?
谢谢。
Hello ChssPly76, 感谢您的回复。 我将hibernate转换为在有休眠时使用序列的BigDecimal。它解决了我的问题。 我在这里发布它知道如何扩展hibernate identifiergenerator类来使用bigDecimal序列生成器。 我不明白。但将BigDecimal转换为long可以肯定地解决问题。 谢谢。 – amar4kintu 2009-08-25 12:31:49
我已经解释了如何在上面的答案中扩展'SequenceGenerator'。看看它的'generate()'方法 - 你基本上会复制整个东西并用'resultSet.get()'替换'IdentifierGeneratorFactory.get()'来获得你的BigDecimal值。 – ChssPly76 2009-08-25 16:16:34
我将我所有的big_decimal字段设置为在我的hibernate生成文件中被占用的时间..所以现在它工作正常..谢谢..对于您的支持.. – amar4kintu 2009-12-29 12:21:43