Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jpa运行strored过程创建查询_Java_Jpa_Stored Procedures_Jpa 2.1 - Fatal编程技术网

Java 如何使用jpa运行strored过程创建查询

Java 如何使用jpa运行strored过程创建查询,java,jpa,stored-procedures,jpa-2.1,Java,Jpa,Stored Procedures,Jpa 2.1,我想使用现有查询创建存储过程。我无法运行整个查询,它引发了SQLGrammer异常 Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '// CREATE PROCEDURE INSERT_S

我想使用现有查询创建存储过程。我无法运行整个查询,它引发了SQLGrammer异常

Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '//
CREATE PROCEDURE INSERT_SECURITY_PARAMETERS()
BEGIN
DECLARE CONTINUE HANDLER ' at line 1
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:391)
    at com.mysql.cj.jdbc.CallableStatement.execute(CallableStatement.java:842)
我的测试代码如下所示:

  @Test
    public void  procedureTest(){
        EntityManager em = getEntityManager();
        em.getTransaction().begin();
        StoredProcedureQuery  storedProcedureQuery = em.createStoredProcedureQuery("DELIMITER //\n" +
                "CREATE PROCEDURE INSERT_SECURITY_PARAMETERS()\n" +
                "BEGIN\n" +
                "DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SELECT 'SQLSTATE 23000' ErrorCode;\n" +
                "INSERT INTO TB_ASMI_SECURITY_PARAMETERS (APP_ID,MIN_NUM_NUM,MIN_NUM_SPCL_CHAR,MIN_NUM_UPPER_CASE_CHAR,MIN_LENGTH,MAX_LENGTH,PASS_CHANGE_FREQ,LAST_N_PASS_NOT_TO_USE,SESSION_TIMEOUT,NOOFFAILEDCOUNTS,CREATE_USER_ID,CREATE_TS,VERSION_NO,SERVER_TOKEN,FAIL_COUNT_TIMEOUT,PASSWORD_COUNT,DEFAULT_AUTHORIZATION,ALLOW_USER_PASSWORD_ENTRY,AUTO_APPROVE,PWD_COMM_CHANNEL,AUTH_STATUS,MULTIPLE_SESSION_ALLOWED,OTP_LENGTH,OTP_VALIDATION_COUNT,OTP_EXPIRY,OTP_RESEND,OTP_FORMAT,OTP_RESEND_COUNT,OTP_RESEND_LOCK_TIMEOUT,OTP_REGEN_COUNT,DATA_INTEGRITY,TXN_LOG_REQ,TXN_LOG_PAYLOAD,FMW_TXN_REQ,FMW_TXN_PAYLOAD, ACCESS_TOKEN_EXPIRY)\n" +
                " VALUES('Admin',1,1,1,8,32,30,1,'3000',5,'System',null,1,'ADMIN',5,5,'Y','N','Y','BOTH','A','Y','6','5','600','N','numeric','3','300','0','Y','Y','NONE','Y','NONE','1800');\n" +
                "END\n" +
                "//\n" +
                "DELIMITER ;");


        storedProcedureQuery.execute();
        em.getTransaction().commit();
        em.close();
    }
如果我从mysql Workbench运行,它工作得很好

我尝试了不同的方式来运行脚本。请帮我做这件事。谢谢。

MySQL服务器版本,以获取在“/…”附近使用的正确语法。。。删除“/”可能?请尝试从查询中删除“//\n”和其他换行符。我也尝试过删除“/\n”和换行符,但没有luckMySQL服务器版本,以便在“/”附近使用正确的语法。。。删除“/”可能?尝试从查询中删除“//\n”和其他换行符。我也尝试过删除“//\n”和换行符,但没有成功