为什么Hibernate的EntityManager.persist()不引发异常?

问题描述 投票:0回答:1

我无法弄清楚为什么在尝试将20个字符插入10个字节的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异常)。什么都没有打印出来,我在调用方法中收到了TRUE值。此外,什么也不会插入到表中,这是预期的。使用有效的数据,我确认插入有效。

发生了什么事?

java hibernate jpa exception entitymanager
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.