为什么 Hibernate 的 EntityManager.persist() 没有抛出异常?

Why is Hibernate's EntityManager.persist() not throwing an exception?

我不明白为什么我在尝试将 20 个字符插入 10 字节的 oracle table 字段时没有看到异常...我确认对象中存在错误(太大的字符串),并且数据库确实显示 varchar2(10).

这是代码(为简单起见删除了额外的逻辑)

boolean isSuccess = false;
arrMyObject
for(int i = 0; i < arrMyObject.length; i++) {
    try {
        MyObject myObject = arrMyObject[i];
        em.persist(myObject);
        return true;
    } catch (Exception e) {
        System.out.println("Error");
        throw (e);
    }
}
return false;

我没有收到异常(预计会出现一些 ORA 异常)。什么都没有打印出来,我在我的调用方法中收到了一个 TRUE 值。此外,没有任何内容被插入 table,这是预期的。使用有效数据,我确认插入有效。

怎么回事?

恕我直言,在您测试时,当前事务尚未提交并且休眠会话尚未刷新,因此您没有到达数据库并且没有收到错误。尝试刷新休眠会话只是为了看看(不要让刷新调用在生产中)