java - 无法使用注释更改 Hibernate 3.6.10 上的序列名称 (Oracle 10g)

标签 java spring hibernate oracle10g jpa-2.0

我有一个类注释如下:

@Entity
@Table(name="MYENTITY")
@SequenceGenerator(name="CODE_GEN", sequenceName="SEQ_NAME")
public class MyEntity {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="CODE_GEN")    
    @Column(name="CODE", nullable=false)
    private int code;

我正在使用 hibernate 3.6.10 和 Oracle10gDialect。数据库是Oracle 10g。创建了一个序列:

CREATE SEQUENCE SCHEMA_NAME.SEQ_NAME
  START WITH 0
  MAXVALUE 999999999999999999999999999
  MINVALUE 0
  NOCYCLE
  NOCACHE
  NOORDER;
COMMIT;

当我尝试保留 MyEntity 类时,我得到:

Hibernate: select hibernate_sequence.nextval from dual
19-jul-2012 13:31:24 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 2289, SQLState: 42000
19-jul-2012 13:31:24 org.hibernate.util.JDBCExceptionReporter logExceptions
GRAVE: ORA-02289: sequence not exist

如果我使用 @SequenceGenerator (sequenceName="SEQ_NAME") 声明序列名称,为什么 hibernate 总是尝试访问 hibernate_sequence?我的注释有问题吗?

我尝试了很多组合,但 Hibernate 总是忽略序列名称并查找“hibernate_sequence”。顺便说一句,我正在使用 GenerationType.AUTO,因为此应用程序还必须运行于 SQLServer。

谢谢...

最佳答案

我终于能够使用hibernate自己的注释来使用我自己的序列,因为这个版本似乎并不完全支持注释@SequenceGenerator。所以代码最终是这样的:

@Entity
@Table(name="MYENTITY")
@GenericGenerator(name="CODE_GEN", strategy = "native", parameters = 
                  { @Parameter(name="sequence", value="SEQ_NAME")})
public class MyEntity {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="CODE_GEN")    
    @Column(name="CODE", nullable=false)
    private int code;

用@GenericGenerator替换@SequenceGenerator就可以了。

关于java - 无法使用注释更改 Hibernate 3.6.10 上的序列名称 (Oracle 10g),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566877/

相关文章:

java - 如何在以下代码中的日志中附加一些字符串

java - 在集合中搜索同一对象的不同实例

java - 尝试从数据库白色 EhCache 引导过程加载数据时出现异常

java - 我可以使用 Spring Data saveAll() 方法和 Hibernate 5 批处理吗?

Java hibernate SQL 错误 : check right syntax to use near 'condition, description, name, pictures, price, status, User_UserAddress_idUserAd' at line 1

java - 为什么即使不涉及事务,我也可以使用 hibernate 插入/更新数据?

JAVA - 可能的 SQL 注入(inject)

java - 将 libgdx 部署到 android studio 上的 html5

java - 使用 Java 和 Spring、消息传递或 RMI 进行分布式计算?

java - Spring @cacheable 如何在凌晨 12 点刷新缓存?