2009-09-10 6 views
4

나는 nhibernate validator로 놀아 거의 완벽한 해결책을 얻었다.맞춤 속성의 유효성을 검사하는 방법은 무엇입니까?

유효성을 검사 할 속성을 정의 할 수 있으며 사전 저장시 완료됩니다. 하지만 작동하지 않는 경우가 있습니다.

Person이라고하는 객체가 있다고 가정하고 nhibernate를 통해 주소 (객체)도 사람의 속성 (사실 주소 목록)으로 매핑했습니다.

사람을 저장할 때 내 주소가 확인되지 않습니다.

정보를 입력하는 양식은 부분 양식으로 이루어져 있습니다. 사람의 유효성 검사 목록에 주소 유효성 검사를 추가 할 수 있지만 필요하지 않은 것이면 좋을 것입니다.

일반적인 해결책이 필요합니다. "손"으로 확인할 수 없습니다. 예 : 사람이 주소를 확인하면 ... 어떻게 든 유효성 검사기는 내가 확인해야하는 속성 뒤에있는 객체가 있는지 확인해야합니다.

업데이트 : 내가 찾고있는 것은 매핑 된 객체 (hasmany)의 유효성을 검사하는 방법입니다.

+0

소스 코드를 게시 할 수 있습니까? 특히 유효성 검사기가 관심있는 열/컬렉션에 연결되는 방법은 무엇입니까? 내가 NHibernate에 검증 속성을 가지고있는 클래스에서 –

+0

날 과 같이 정의 할 수 있습니다 : public 가상 캐릭터 foofield {얻을; 설정;} 하는의 내가 있다고 가정 해 봅시다 [NotNullNotEmpty (메시지 = "Foofield 뭔가를 입력하세요.")] 학급 사람과 거기에 클래스 주소. 그래서 나는 그 사람의 클래스 hasmany

에 주소를 확인하지 않은 사람을 저장에 매핑합니다. 각각에 대해 save를 호출하면 유효성이 확인됩니다 ...하지만 이는 해결책이 아닙니다.) – griti

답변

1

nhibernate 유효성 검사기의 최신 릴리스로 전환 한 후 유효성 검사는 하위 클래스와 매핑 된 클래스에 대해 작동합니다. xVal 1.0과 함께 매우 만족스러운 솔루션입니다.

이제 모든 속성에 대해 유효성을 검사해야하는 대상 (예 : 정규식, 길이 등 ...)에 대해 정의 할 수 있으며 nHibernate 검사기를 통해 서버 쪽에서 xVal을 통해 클라이언트 쪽에서 메시지를 가져옵니다. 사실 그들은 검증 패턴과 오류 메시지를 공유합니다.

유효성 검사 및 메시징에 대한 간단한 정의가 필요한 모든 nHibernate-Project에이 설정을 권장합니다.

1

내가 입력하려고하는 클래스에 입력 유효성 검사를 넣으려고한다면 비즈니스 로직과 마찬가지로 입력 거부를 권장합니다. 이를 수행하는 Hibernate에서 발견 할 수있는 것은 데이터베이스 (즉, 널이 아닌 컬럼)의 제한 조건을 보장하기위한 것입니다.

입력 유효성 검사를 수행 할 유틸리티 클래스 또는 메서드를 만드는 것이 좋습니다. 엔터티 속성에 데이터베이스 제약 조건을 추가해야하는 경우 꼭 그렇게하십시오.하지만 입력 유효성 검사에 의존하지는 않습니다.

+1

비즈니스 로직/서버 측에서 입력 유효성 검사와 유효성 검사가 모두 필요합니다. xVal과 nHibernate를 사용하면 거의 아무런 노력없이 둘 다 얻을 수 있습니다. 내 대답을 참조하십시오, 우리는 같은 시간에 대해 썼습니다 :) +1 내 문제로 thinging에 대한) 일반적으로 나는 당신의 제안에 동의, 내가 완성 솔루션을 찾고 있었고, 이것에 의해 지금은 많은 오버 헤드가되었을 것입니다 . – griti

관련 문제