2013-03-01 56 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对象时,会出现问题。我需要使用下面的代码行(或者相当的代码),所以我想知道我需要在其他地方更改(除了更改数据库)以使其起作用吗?也许有一种方法来改变约束被侵犯(我不熟悉Java中处理约束) (主要/次要都是正确的)

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

THANK YOU

+0

请显示PwVersions实体。 – atamanroman 2013-03-01 18:50:35

回答

2

验证异常最可能抛出通过此注释:

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

放置在类EntityBeans.PwVersions的属性前面。为了摆脱它,可以调整数据库表中字段的长度,或者调整注释本身以匹配db字段的最大大小(或者如果不需要注释,则删除注释)完全)。

EJB异常只是捕获验证异常并重新抛出它,因为您的代码片段放置在EJB中。

+0

是的!我只是想到了这一点,而且在数据库中,列的类型是:VARCHAR2(45 BYTE) Thanx! – Glenninator 2013-03-01 20:09:45