我正在执行休眠Criteria.list()
并收到错误:
ORA-01401:插入的值对于列来说太大。
编辑:
实际上,问题出在甲骨文上。在数据库 Oracle 上存在的参数中,有一个NLS_SORT的工作方式如下:
NLS_SORT=WEST_EUROPEAN; //limits the clause 'order by' for a column that not exceed 999 characters
或
NLS_SORT=BINARY; //accepts values greater than 999 characters on the clause 'order by'
我正在传递一列,该列确实在子句"排序依据"中包含超过 999 个字符。有关详细信息,请单击链接 1 和链接 2。
Hibernate 的会话就像缓存一样,实体写入仅在最后可能的时刻或会话刷新时持久保存到数据库中。
我的猜测是list()
触发器从一些以前修改的实体插入或更新到数据库中。这样做是因为 Hibernate 需要保证list()
永远不会返回过时或不正确的数据。
记录Hibernate生成的查询(hibernate.show_sql
+ hibernate.format_sql
),并查看在错误之前执行了哪个特定语句。