私はこのように注釈が付けられたクラスを持っています:
@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;
hibernate3.6.10とOracle10gDialectを使用しています。データベースはOracle10gです。シーケンスが作成されました:
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」を探します。ところで、このアプリはSQLServerに対しても実行する必要があるため、GenerationType.AUTOを使用しています。
ありがとう...