【问题标题】:IllegalArgumentException: Type cannot be null (in JAVA)IllegalArgumentException:类型不能为空(在 JAVA 中)
【发布时间】:2015-08-11 09:43:45
【问题描述】:

我正面临SO link 中描述的确切问题,该问题尚未得到解答。我已经尝试了评论部分给出的建议,没有任何效果。

我在网上搜索了答案,但没有找到答案。

我的程序如下所示。

DROP PROCEDURE IF EXISTS userdb.new_test;
CREATE PROCEDURE userdb.new_test (IN arg varchar(255))
BEGIN   
  select * FROM message 
END;

从这个link我知道了

此异常表示使用不正确的输入参数调用方法。然后,您唯一需要做的就是更正输入参数的值。为了实现这一点,请按照堆栈跟踪中找到的调用堆栈并检查哪个方法产生了无效参数。

有谁知道如何解决这个问题?

【问题讨论】:

    标签: mysql hibernate spring-mvc jpa


    【解决方案1】:

    这很可能是因为您的过程IN arg varchar(255) 中的非默认值参数,如果没有错误,您可能在没有传递任何参数的情况下调用该过程。你需要像这样打电话

    call userdb.new_test 'some value'
    

    MySQLSQL Server 中同样不支持参数默认值,所以你不能说IN arg varchar(255) = null

    另外,我没有看到您在查询中使用该参数,所以最好放弃它;

    DROP PROCEDURE IF EXISTS userdb.new_test;
    CREATE PROCEDURE userdb.new_test 
    BEGIN   
      select * FROM message 
    END;
    

    【讨论】:

    • 就像上面“SO链接”中解释的问题一样,我使用@Procedure(name="new_test") List findBySome(@Param("value") String value);它是一个测试过程,我想扩展它以生成动态查询,所以我将使用更多的 IN 参数。
    • 我尝试了你的建议,但得到了同样的错误。如果有什么我遗漏的,请告诉我。
    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多