2013-06-02 2 views
5

임 사용Hibernate 프록시에서 Bean 유효성 검사가 실패합니까? 예상되는 행동?

  • hibernate-core-4.0.1.Final
  • hibernate-validator-4.2.0.Final

내가 가진 게으른로드 가능한 엔티티

@NotNull 
@OneToOne(fetch = FetchType.LAZY,optional = false,cascade = CascadeType.PERSIST) 
@JoinColumn(name="library_id") 
private Library library; 

public Library getLibray() { 
    return library; 
} 

및 defaultValidator

private final ValidatorFactory factory = Validation 
      .buildDefaultValidatorFactory(); 
private final Validator val = factory.getValidator(); 

@NotNull, @Size 등으로 주석이 달린 연결되지 않은 첨부 된 엔터티의 유효성을 검사하려고 할 때. 모든 것이 정상적으로 작동합니다. 하지만 게으른로드를 통해 엔터티를로드하고 유효성 검사를 시도 할 때. 매번 Validator가 실패합니다. 이것은 Hibernate Proxy Object를 얻고 있기 때문인 것으로 보인다.

난. 그냥 unproxying 쉽게이 "문제"를 arround 얻을 수 있습니다 (하지만 내 상황에서 매우 유리한되지 않습니다)

이 예상되는 행동인가? OpenJPA, EclipseLink에서 동일한 동작을합니까? ...?

멋진 일요일 녀석 되세요;) 내가 질문을 분명히했으면 좋겠습니까?

답변

5

필드 대신 필드에 주석을 달아 문제를 해결할 수 있습니다.

이 내용은 HVAL-13 호 및 HV-535 호에서 더 자세히 논의됩니다. 주석을 대체 할 수 없다면 버그 리포트에서 HibernateProxyValidator를 대신 사용하는 것이 좋습니다.

+0

Thx 두 링크 모두 매우 유용합니다. 나는 당신의 대답을 upvote 기울이지 않는다 : (그러나 이것은 "해결책"이다 – Marvin

+0

당신의 도움이되는 Thx 남자.;) 나는 공동체에 더 많이 참여하고 싶다;) – Marvin

+0

@ 마빈 어떻게 문제를 해결 했습니까? didnt는 심지어 내가 원래했던 방식 인 방법에 주석을 달아줍니다. BTW, 내 문제가 있다면 'OneToMany' 관계입니다. – Quincy