2017-08-06 7 views
-1

私のJavaコードでは、挿入操作を実行しようとしていますが、何らかの理由で私はSQLSyntaxErrorExceptionを取得しています。私は試してみましたが、その背後に理由はありません。以下は私のコードです。SQLSyntaxErrorException - ORA-02287:シーケンス番号はここでは許可されていません

Query nativeQuery = em.createNativeQuery(
      "insert into TABLE_DIMENSION (DIMESNION_ID, DIMENSION_CODE, TABLE_CODE, TABLE_IND, CREATE_TIME, " 
      + "CREATE_PLACE, CHG_DT, CHG_WARDANT) " 
      + " (select TABLE_DIMENSION_SEQ.nextval, d.name,:dimensionCode, 0, :time, :place, :date, :wardant from table_master d where d.name in (:table_dimension_ids)) "); 
     nativeQuery.setParameter("date", new Date()); 
     nativeQuery.setParameter("table_dimension_ids", tableDimensionList); 
     nativeQuery.setParameter("dimensionCode", dimensionCode); 
     nativeQuery.setParameter("wardant", wardant); 
     number = nativeQuery.executeUpdate(); 

ご案内してください。あなたが使用する必要がありますので、あなたは、他の人のようなパラメータに:place:timeを置くために不足している

+0

SQLは、 'select'の回りの括弧の括弧を離れてOKです。 'TABLE_DIMENSION'は本当に' DIMESNION_ID'という列を持っていますか? (無効な列名では、別のエラーメッセージが表示されますが) –

+0

* "参考にしてください" *ここにいくつかのガイダンスがあります:Google it:['ORA-02287:シーケンス番号は許可されていません '](https://www.google .com/search?q = ORA-02287%3A +シーケンス+数字+ not + allowed +ここ)。あなたは良い助けを見つけるでしょう。 – Andreas

+0

@アンドレアス:私は何年も続いています。関連する質問は私のものに似ていませんでした。私はどこかで自分のコードが正しいと感じていましたが、仕事をしていませんでした。 – sTg

答えて

2

あなたは6パラメータを使用するクエリを告げたあなただけ4パラメータ設定:

nativeQuery.setParameter("place", place); 
nativeQuery.setParameter("time", time); 
あなたのクエリを実行する前に

、他のあなたのクエリからそれを削除する必要が

+1

':time'も欠けています。エラーメッセージとは関係がありません。 – Andreas

1

あなたは()飛ばしてください:

insert into TABLE_DIMENSION 
     (DIMESNION_ID, DIMENSION_CODE, TABLE_CODE, TABLE_IND 
     , CREATE_TIME, CREATE_PLACE, CHG_DT, CHG_WARDANT) 
select TABLE_DIMENSION_SEQ.nextval, d.name,:dimensionCode, 0 
     , :time, :place, :date, :wardant 
from table_master d 
where d.name in (:table_dimension_ids) 
関連する問題