0

我有一个带有 JBoss AS 7.1.1 的 EJB 3.0 客户端和服务器。我正在尝试将实体列表持久保存到我连接到的数据库中,但我不断收到此错误:

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

SEQ_ID在我的 Oracle 数据库中调用了一个序列生成器。我按照本教程进行了设置: http: //www.developerscrappad.com/408/java/java-ee/ejb3-jpa-3-ways-of-generating-primary-key-through-generatedvalue/

这是我在主键上使用上述教程中的注释的实体 bean:http: //pastebin.com/QJ6W5VLG

这是我保留实体列表的函数:

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 两个注释时才出现。所以这肯定是序列发生的事情。这里有什么问题?

4

1 回答 1

2

事实证明,HQL 方言是错误的。我需要将其更改为:

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

在我服务器的 META-INF 文件夹中的 persistence.xml 中。

于 2012-09-21T19:20:52.103 回答