私はSpringブート、Hibernate/JPA、H2を使用していくつかのエンティティを開発しています。H2:シーケンスが見つかりません。例外ですが、スキーマに存在します。
H2パブリックスキーマでテーブル/シーケンスを作成すると、すべて正常で、アプリケーションからデータベースに読み込み/挿入できます。
ただし、私が作成したスキーマにテーブル/シーケンスを作成すると、シーケンスが見つからないため挿入できません。私はH2データベースでそれを見ることができますし、正しいスキーマにあるように見える、私は手動でそれから選択することができますが、私のコードでは、インサートをやろうとしたとき、私は得る:
Caused by: org.h2.jdbc.JdbcSQLException: Sequence "VENUE_SQ" not found; SQL statement:
call next value for VENUE_SQ [90036-191]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.191.jar:1.4.191]
at org.h2.message.DbException.get(DbException.java:179) ~[h2-1.4.191.jar:1.4.191]
at org.h2.message.DbException.get(DbException.java:155) ~[h2-1.4.191.jar:1.4.191]
at org.h2.command.Parser.readSequence(Parser.java:5399) ~[h2-1.4.191.jar:1.4.191]
at org.h2.command.Parser.readTerm(Parser.java:2806) ~[h2-1.4.191.jar:1.4.191]
etc...
いくつかのDDL:
create schema MY_SCHEMA AUTHORIZATION MY_SCHEMA_OWNER;
set schema MY_SCHEMA;
create sequence VENUE_SQ;
CREATE TABLE VENUE (
ID number not null,
NAME varchar2(255) not null, etc...
いくつかのDML:
INSERT INTO VENUE (ID, NAME, etc...
一部JPA
@Entity
@Table(name = "VENUE", schema = "MY_SCHEMA")
@SequenceGenerator(name = "ID", sequenceName = "VENUE_SQ",
allocationSize = 1, schema = "MY_SCHEMA")
public class Venue {
@Id
@GeneratedValue(generator = "ID", strategy = GenerationType.SEQUENCE)
@Column(name = "ID", nullable = false)
private Long id;
@Column(name = "NAME")
private String name;
etc...
休止4.3.11
H2 1.4
春ブーツ1.3.3.RELEASE
UPDATE
私は、スキーマとシーケンスの名前を付けることによって、この作業を取得するために管理してきました@ SequenceGeneratorアノテーションに追加します。私は、そのアノテーションのパラメータにスキーマを与えているので、これが必要であるとは思わない!
@SequenceGenerator(name = "ID", sequenceName = "MY_SCHEMA.VENUE_SQ",
allocationSize = 1, schema = "MY_SCHEMA")
この問題はまだ解決していません
UPDATE 2
下記の私の答えを参照してください、これは私たちのバージョンでは、Hibernateのバグに関連しています。