Gre*_*oot 7 java hibernate hibernate-5.x
我有以下映射:
<id name="id" type="java.lang.Long" column="id">
<generator class="sequence">
<param name="sequence">tracksdata_seq</param>
</generator>
</id>
Run Code Online (Sandbox Code Playgroud)
当我在Hibernate 4.2中使用它时,一切都很顺利.现在我正在迁移到Hibernate 5并面临以下问题:
2015-10-06 19:49:50 DEBUG SQL:92 - select nextval ('hibernate_sequence')
2015-10-06 19:49:50 DEBUG SqlExceptionHelper:122 - could not extract ResultSet [n/a]
org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
PS Hibernate 5.0.2.Final.
小智 11
您有两种选择:
hibernate.id.new_generator_mappings配置属性设置为false并切换回旧的标识符生成器您可以按如下方式更改映射:
<generator class="sequence">
<param name="sequence">MY_SEQUENCE</param>
</generator>
Run Code Online (Sandbox Code Playgroud)
至:
<generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
<param name="optimizer">none</param>
<param name="increment_size">1</param>
<param name="sequence_name">MY_SEQUENCE</param>
</generator>
Run Code Online (Sandbox Code Playgroud)我在从 Hibernate 4.3.10 迁移到 Hibernate 5.0.4 时也遇到了这个问题。与 maksim2020 一样,我将 的实例替换<generator class="sequence">为<generator class="identity">. 但是,为了保留受影响表的 id 序列,我还必须编写一个 sql 迁移脚本,该脚本将列的默认值设置为现有序列的下一个值。在 PostgreSQL 中,这是按如下方式完成的:
ALTER TABLE ONLY affected_table ALTER COLUMN affected_id SET DEFAULT nextval('original_sequence'::regclass);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6434 次 |
| 最近记录: |