0

JBoss AS 7.1.1 を搭載した EJB 3.0 クライアントとサーバーを使用しています。接続しているデータベースにエンティティのリストを永続化しようとしていますが、次のエラーが発生し続けます。

java.sql.SQLException: ORA-06576: not a valid function or procedure name

SEQ_IDOracle データベースで呼び出されるシーケンス ジェネレーターがあります。このチュートリアルに従ってセットアップしました: http://www.developerscrappad.com/408/java/java-ee/ejb3-jpa-3-ways-of-generating-primary-key-through-generatedvalue/

上記のチュートリアルの注釈を主キーで使用するエンティティBeanは次のとおりです。

エンティティのリストを保持する関数は次のとおりです。

public void persistSchemas(List schemasList){
    String strDelete = " DELETE FROM Schemas s ";
    Query query = em.createQuery(strDelete);
    query.executeUpdate();

    for(Schemas schema : (List<Schemas>)schemasList){
        em.persist(schema);
    }
}

サーバー上のエラーの完全なスタック トレースは次のとおりです: http://pastebin.com/rmURYdRD

エラーは、エンティティを永続化しようとしたときにのみ表示され、エンティティには @SequenceGenerator と @GeneratedValue の 2 つの注釈があります。だから、それは間違いなくシーケンスで起こっていることです. ここで何が問題なのですか?

4

1 に答える 1

2

HQLの方言が間違っていたことが判明しました。次のように変更する必要がありました。

<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle8iDialect"/>

サーバーのMETA-INFフォルダーにあるpersistence.xmlにあります。

于 2012-09-21T19:20:52.103 に答える