[Seasar-user:21468] Re: Kuina-Dao + PostgreSQL でSEQUENCE取得が失敗する

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2012年 9月 19日 (水) 00:26:00 JST


小林 (koichik) です.

META-INF/persistence.xml で PostgreSQL のダイアレクトを
使用するように修正しましたか?


On Tue, 18 Sep 2012 23:58:42 +0900 (JST), babaya1988 @ yahoo.co.jp wrote:

> はじめまして。
> 関根と申します。
> 
> Kuina-Dao について質問です、ご存知の方がいましたら教えて下さい。
> 
> 
> Doltengで生成したプロジェクトでDBにH2サーバを使用してソースの自動生成を行いました。
> H2での動作は確認済みです。
> これを、今回 PostgreSQL 9.1 に接続するよう jdbc.dicon を変更して動作させたところ、
> データの登録でエラーが発生しました。
> ログを見る限りでは、シーケンスを取得でSQL構文エラーが発生しているように見えます。
> 
> PostgreSQL では select nextval('シーケンス名') のSQLを期待していましたが、
> 
> シーケンス取得のSQLの変更は可能でしょうか?
> 
> ・ 環境
> kuina-dao-1.0.3.jar
> 
> postgresql-9.1-902.jdbc4.jar
> 
> s2hibernate-jpa-1.0.1.jar
> 
> 
> ・ Entityソース(一部)
> @Entity
> 
> @Table(name="USER_INFO")
> public class UserInfo {
> 
> @Id
> @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_INFO_GEN")
> 
> @SequenceGenerator(
>  ? ?name = "USER_INFO_GEN",
>  ? ?sequenceName = "シーケンス名")
> private Long id;
> 
> ・?server.log
> 
> Caused by: org.hibernate.exception.GenericJDBCException: could not get next sequence value
> 
> at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
> at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
> at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
> at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
> at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:58)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
> at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
> at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
> at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
> at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
> at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
> at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
> at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:212)
> ... 96 more
> Caused by: org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[call next value for?シーケンス名], Message=[0], ErrorCode=, SQLState={3})が発生しました
> 
> at org.seasar.extension.jdbc.impl.PreparedStatementWrapper.wrapException(PreparedStatementWrapper.java:72)
> at org.seasar.extension.jdbc.impl.PreparedStatementWrapper.wrapException(PreparedStatementWrapper.java:67)
> at org.seasar.extension.jdbc.impl.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:83)
> at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)
> ... 105 more
> Caused by: org.postgresql.util.PSQLException: ERROR: ?"call"またはその近辺で構文エラー(文字位置 1)
> at org.postgresql.core.v2.QueryExecutorImpl.receiveErrorMessage(QueryExecutorImpl.java:560)
> at org.postgresql.core.v2.QueryExecutorImpl.processResults(QueryExecutorImpl.java:483)
> at org.postgresql.core.v2.QueryExecutorImpl.execute(QueryExecutorImpl.java:363)
> at org.postgresql.core.v2.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
> at org.seasar.extension.jdbc.impl.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:81)
> ... 106 more
> 
> 
> 以上、宜しくお願い致します。


-- 
{
  name: "Koichi Kobayashi",
  mail: "koichik @ improvement.jp",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
}



Seasar-user メーリングリストの案内