我目前正在測試我在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。而你仍然沒有解釋爲什麼你無法捕捉它。 –