В настоящее время я тестирую уровень доступа к данным, который я создал весной (вставляется PersistenceContext). Таким образом, у меня есть ESI-сервер без состояния, который вызывает службу, например 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. Даже если я включил метод persist() с try/catch, он не смог поймать ошибку. – czetsuya
Я до сих пор не вижу попыток/улов в коде. И вы все еще не объяснили, почему вы не можете его поймать. –