查询插入参数太长时Hibernate sql语法异常

时间:2013-04-30 08:23:45

标签: java sql hibernate

有一种方法可以尝试进行更新操作;

public boolean formVeriGuncelleSil(String sql) throws VeritabaniException {
        try {
            Session session = getSessionFactory().getCurrentSession();
            SQLQuery query = session.createSQLQuery(sql);
            query.executeUpdate();
            return true;
        } catch (RuntimeException e) {
            throw new VeritabaniException(e, VERIGUNCELLEMEEXCEPTION, "FID_01_02_01");
        }
    }

sql字符串

UPDATE K1FORM_LISTGRID3 SET TEXTAREA4='X', TEXTT5='ANAFORM',ANATABLO='1', OLUSTURAN_KULLANICI='184' WHERE ID=1

如果X是非常长的字符串,我有这个例外;

org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query

如果X是普通字符串,则没有异常。

如果X太长,X字符串会产生异常。

我搜索过,但我找不到任何解决方案。请帮助。

2 个答案:

答案 0 :(得分:1)

解决方法是为TEXTAREA4设置较长的长度。

如果您输入的是文件内容,则可以使用blob代替String。我相信在尝试批量更新时,它没有字符串这样的界限。

答案 1 :(得分:-1)

致电createQuery()而非createSQLQuery()

SQLQuery query = session.createQuery(sql);