gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:35:03 25 4
gpt4 key购买 nike

我有一个这样注释的类:

@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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com