Missing IN or OUT parameter at index:: 1

Sha*_*ahe 5 sql oracle triggers hibernate jdbc

I am trying to execute a query in java code, the query is:

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();
Run Code Online (Sandbox Code Playgroud)

When I try to execute this query in SQL Developer it works fine, but in jdbc it is throwing an exception.

Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 1

Database:  Oracle 10g
Hibernate: 3.0
Run Code Online (Sandbox Code Playgroud)

Sha*_*ahe 5

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

Connection conn = session.connection();
Statement state = conn.createStatement();
state.execute(triggerQuery);
state.close();
Run Code Online (Sandbox Code Playgroud)