要将以前做的几个页面和现在的项目整合在一起,但是测试的时候发现突然没法跑了。以前都是可以正常运行的。结果发现是因为原来我在数据库中新建的表因为数据库重新还原而导致丢失。一次我从建了表及其对应的序列、触发器,但是在保存数据的时候报错:ORA-02289:序列不存在。
因此将其中orm映射的关系进行了调整,原来的主键生成策略:
<idname="relayStationId"type="long">
<columnname="RELAY_STATION_ID"precision="6"scale="0"/>
<generatorclass="native"></generator>
</id>
修改为如下的主键生成策略:
<idname="relayStationId"type="long">
<columnname="RELAY_STATION_ID"precision="6"scale="0"/>
<generatorclass="sequence">
<paramname="sequence">HSY_SEQ_STATION</param>
</generator>
</id>
如此便能正确运行。
据悉,对于不能确定的主键生成策略,class可以为native,hibernate会自动选择正确的策略。以前运行都是正常的,说明这个说法是正确的。但是这次却不能运行,看来这个东西并不是能很好的自动选择主键生成策略。因此在我们知道如何主键生成的情况下,就直接配置出来,不要用自动选择主键生成策略的native。