2013-03-01 1 views
0

는이 오류가 나타납니다특정 Java EJB 제약 조건 위반 오류입니다. 왜?

javax.ejb.EJBException: javax.validation.ConstraintViolationException: Validation 
failed for classes [EntityBeans.PwVersions] during update time for groups 
[javax.validation.groups.Default, ] List of constraint violations: 
[ ConstraintViolationImpl{interpolatedMessage='size must be between 0 and 45', 
propertyPath=directory, rootBeanClass=class EntityBeans.PwVersions, messageTemplate='{javax.validation.constraints.Size.message}'} ] 

런타임을 좌절입니다. 쿼리 결과를 PwVersions 객체로 캐스팅하려고하면 문제가 발생합니다. 아래 코드 줄 (또는 이에 상응하는 코드)을 사용해야하므로 데이터베이스를 변경하지 않고 다른 곳에서 변경해야 할 사항을 알고 싶습니다. 아마도 위반되는 제약 조건을 변경하는 방법

PwVersions pwv= (PwVersions)em.createQuery("select pwv from PwVersions pwv where 
major= :major and minor = :minor").getSingleResult(); 

감사합니다

+0

PwVersions 엔터티를 표시하십시오. – atamanroman

답변

2

검증 예외가 아마 대부분 발생합니다 (모두 올바른이되는 주요/마이너) (I 자바에서 처리 제한에 익숙하지 않은 오전)가있다 이 주석에 의해 : 속성 앞에 배치 된

@javax.validation.constraints.Size(min = 0, max = 45) 

이 문제를 해결하려면 db 테이블의 필드 길이를 조정하거나 Size 주석 자체를 조정하여 db 필드의 최대 크기와 일치 시키거나 (필요하지 않으면 주석을 제거하십시오.) 조금도).

EJB 예외는 유효성 검사 예외를 catch하고 다시 throw하는 것이므로 코드 조각이 EJB에 배치되어 있기 때문입니다.

+0

예! 나는 그걸 알아 냈고 또한 데이터베이스에서 열은 다음과 같은 형식입니다 : VARCHAR2 (45 BYTE) 고맙습니다! – Glenninator