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

时间:2015-08-08 17:25:28

标签: java hibernate jpa exception-handling persist

我无法弄清楚为什么我没有看到尝试将20个字符插入到10byte oracle表字段中的异常...我确认对象中存在错误(太大的字符串),并且数据库确实显示了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异常)。什么都没打印出来,我在调用方法中收到了一个真值。此外,没有任何内容插入到表中,这是预期的。有效数据我确认插入工作。

怎么回事?

1 个答案:

答案 0 :(得分:1)

恕我直言,在你测试的时候,当前的事务还没有提交,而且hibernate会话还没有被刷新,所以你没有到达数据库并且没有收到错误。尝试刷新休眠会话只是为了看(不要让生产中的刷新调用)