Sql 索引::1处缺少IN或OUT参数

Sql 索引::1处缺少IN或OUT参数,sql,oracle,hibernate,jdbc,triggers,Sql,Oracle,Hibernate,Jdbc,Triggers,我试图用java代码执行一个查询,该查询是: String triggerQuery = "CREATE OR REPLACE TRIGGER global_archive_01 AFTER INSERT ON archive_01 FOR EACH ROW BEGIN INSERT INTO archive values (:NEW.id_01 , :NEW.id_02 , :NEW.id_03 , 'test' , :NEW.id_05);

我试图用java代码执行一个查询,该查询是:

String triggerQuery = 
   "CREATE OR REPLACE TRIGGER global_archive_01
    AFTER INSERT ON archive_01 FOR EACH ROW
    BEGIN
    INSERT INTO archive 
    values (:NEW.id_01 , :NEW.id_02 , :NEW.id_03 , 'test' , :NEW.id_05);
    END;"

Query query = session.createSQLQuery(triggerQuery);
query.executeUpdate();
当我尝试在SQLDeveloper中执行这个查询时,它工作得很好,但在jdbc中它抛出了一个异常

原因:java.sql.SQLException:索引::1处缺少IN或OUT参数

Database:  Oracle 10g
Hibernate: 3.0

事实证明,当您传递一个包含的查询时,hibernate会将其转换为查询中的一个参数,因此解决方案是在简单java语句上执行查询

Connection conn = session.connection();
Statement state = conn.createStatement();
state.execute(triggerQuery);
state.close();