次の問題が発生しました。これはprettycommonのようです。例外はCannot update entity: [...] nested exception is java.sql.BatchUpdateException: ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column
です。 Oracleは、LOBまたはCLOBの後に大きな値(> 4000文字)をパラメータにバインドすることを好まないようです。誰かがこの問題を解決しましたか?HibernateとCLOBでの奇妙なOracleエラー
5
A
答えて
9
ORA-24816
**制限があり、LONGバインド変数は文の最後に付く必要があります。 **
ソース:http://www.odi.ch/weblog/posting.php?posting=496
ソリューション:CLOB列がアルファベット順にご注文時のVARCHAR2列よりも後に来る名前(を持つように休止状態モデル内のフィールドの名前を変更することで、私はのCLOBフィールドを接頭辞javaクラスの 'z'が)、clobパラメータがクエリのhibernateビルドのvarcharパラメータの後に来るため、すべて正常に動作します。
2
Hibernate 3.2.1で同じ問題が発生し、まずCLOBなしでレコードを挿入し、そのレコードをCLOBで更新することで修正しました。
public class Employee{
@Lob
@Column
private String description;
//getters setters
}
String desc = emp.getDescription();
emp.setDescription(null);
session.save(entity);
session.flush();
session.evict(entity);
StringBuilder sb = new StringBuilder();
sb.append("update Employee set description:description");
Query updateQuery = session.createQuery(sb.toString());
updateQuery.setParameter("description", desc, Hibernate.STRING);
updateQuery.executeUpdate();
Hibernateアノテーションを使用している場合、挿入文の列の順序を予測する方法はありません。これはHibernate v4.1.8で修正されました。
関連する問題
- 1. oracle xeの奇妙なテーブル
- 2. 奇妙な鬼のエラーと
- 3. 奇妙なOracle DB baheviour
- 4. 奇妙なOracle XMLType.getClobVal()結果
- 5. 奇妙なエラー
- 6. 奇妙なエラー
- 7. 奇妙なエラー
- 8. 奇妙なエラー
- 9. 奇妙なエラー
- 10. 奇妙なエラー
- 11. MySqlCommand.ExecuteNonQueryエラーと奇妙なC#
- 12. AndroidとIOException - 奇妙なエラー
- 13. 奇妙な無効な識別子のエラーのOracle SQL
- 14. 奇妙なOracleのSQL「無効な識別子」エラー
- 15. Hibernate - ネイティブSQLパラメータの奇妙な順序
- 16. 奇妙なエラーNSAssert
- 17. 奇妙なhtmlエラー
- 18. 奇妙なAdMobエラー
- 19. 奇妙なbibtexエラー
- 20. 奇妙なLogCatエラー
- 21. iPhone奇妙なエラー
- 22. OPENCV奇妙なエラー
- 23. 奇妙なスタックスマッシュ・エラー -
- 24. 奇妙なcx_Freezeエラー
- 25. MySQLProfileProvider奇妙なエラー
- 26. 奇妙なエラーが
- 27. 奇妙なlog4jエラー
- 28. 奇妙な.appendエラー
- 29. 奇妙なECONNRESETエラー
- 30. 奇妙なTC_STRINGエラー
私は、XMLマッピングされたエンティティと私はINSERT/UPDATE文の末尾にCLOBのを取得するための設定のプロパティの順序を変えることができることを見出しました。例えば。 –