有一种方法可以尝试进行更新操作;
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字符串会产生异常。
我搜索过,但我找不到任何解决方案。请帮助。
答案 0 :(得分:1)
解决方法是为TEXTAREA4
设置较长的长度。
如果您输入的是文件内容,则可以使用blob
代替String
。我相信在尝试批量更新时,它没有字符串这样的界限。
答案 1 :(得分:-1)
致电createQuery()
而非createSQLQuery()
。
SQLQuery query = session.createQuery(sql);