我目前正在测试我在Spring中创建的数据访问层(PersistenceContext被注入)。所以我有一个无状态的EJB调用服务,例如UserService,它插入/删除/更新数据库中的数据。如何捕获PSQLException值太长,以便输入字符变化
该服务工作正常,我能够插入数据库。但是,当我测试,我输入的字符串值比设定长度我长:
javax.transaction.RollbackException: Transaction marked for rollback.
WARNING: DTX5014: Caught exception in beforeCompletion() callback:
javax.persistence.PersistenceException: org.hibernate.exception.DataException: ERROR: value too long for type character varying(20)
Caused by: org.hibernate.exception.DataException: ERROR: value too long for type character varying(20)
Caused by: org.hibernate.exception.DataException: ERROR: value too long for type character varying(20)
我的部分代码:
@PersistenceContext
protected EntityManager entityManager;
try {
entityManager.persist(e);
} catch(Exception e) {
//log message here
}
然后我用尽了一切捕获这些错误,但我不能。有关如何解决问题的任何建议?
感谢,
czetsuya
*我无法*不是我之前见过的错误信息。什么没有工作。向我们展示您试图捕捉错误的代码,并解释为什么“*无法”捕捉它。 –
代码就在那里:entityManager.persist(e),问题是我插入的值太长,例如name(5)的字段,然后插入namenamename。即使我用try/catch封装了persist()方法,也无法捕获错误。 – czetsuya
我的代码中仍然没有看到任何try/catch。而你仍然没有解释为什么你无法捕捉它。 –