문제

내 시나리오는 다음과 같습니다.

  • 태그를 붙일 수있는 객체 (메시지)가 있습니다.
  • 그래서 나는 태그 엔터티와 다수의 관계가 있습니다
  • 위의 일이 끝나고 작동합니다
  • 이제 태깅 할 때 새 태그가 존재하지 않는 경우에만 새 태그를 저장하고 싶습니다 (태그 제목으로 존재가 확인됩니다).
  • 태그가 이미 존재한다면 새 객체 대신 내 객체에 첨부되기를 원합니다.

가장 쉬운/가장 깨끗한 방법은 무엇입니까?

BTW, 몇 가지 이유로 태그 엔티티에 인공 기본 키 (숫자 ID)를 사용하고 싶습니다.

감사!

도움이 되었습니까?

해결책

비즈니스 클래스에서 표현하고 nhibernate와지도를 표현할 수있는 많은 관계가 있습니다. 다수의 관계를 해결하는 링크 테이블의 구조는 물체가 동일한 태그에 두 번 이상 연결되는 것을 방지합니다.

질문에서 규칙을 시행하는 유일한 방법은 코드를 통한 것입니다. 작업 순서는 다음과 같습니다.

  1. 구문 분석 사용자는 태그 목록을 개별 태그에 입력했습니다
  2. 태그를 통한 루프 ...

    ㅏ. 태그가 존재하면 객체의 태그 컬렉션에 추가하십시오.

    비. 그렇지 않으면 새 태그를 만들어 개체의 태그 컬렉션에 추가합니다.

  3. 객체를 지속하십시오

철자 실수, 대문자 및 대체 사용법을 고려하여 기존 태그를 찾으려면 논리를 추가해야합니다. 예를 들어, 당신은 그들이 같은 것을 의미하는 태그를 원하지 않지만 "aspnet"또는 "asp.net"또는 "asp.net"과 같은 문자열이 아닙니다. 태그 목록의 품질은 기존 태그를 확인하는 코드가 얼마나 강력한 지에 따라 다릅니다.

다른 팁

명확히하기 위해 - 많은 객체에 태그를 고정 할 수 있으며 객체에는 많은 태그가있을 수 있습니다. 그것이 바로 다수의 관계가 나에게 의미하는 바입니다. 그게 당신이 의미하는 방법인가요?

SQL 에서이 작업을 수행하면 Tag and Object라는 테이블과 다른 테이블의 각 기본 키마다 하나씩 두 개의 열이 포함 된 Tag_object라는 조인 테이블이 있습니다. tag_object 조인 테이블의 기본 키는 쌍 (tag_id, object_id)입니다. 각 행에 대한 고유 한 페어링을 보장합니다.

최대 절전 모드를 사용하는 경우 태그 클래스의 개인 데이터 멤버로 목록 또는 객체를 추가하고 객체 클래스의 개인 데이터 멤버로서 태그 목록 또는 모음을 추가하십시오.

두 개의 태그 인스턴스 사이에서 "깊은 평등"을 결정하는 좋은 방법을 작성하는 한 최대 절전 모드는 "존재하지 않는 경우에만"처리 할 것이라고 생각합니다.

또한 태그 제목 속성에 고유 한 제약 조건을 추가해야합니다. Java와 XML이기 때문에 귀하의 요구에 맞지 않는 예는 다음과 같습니다. 그러나 아마도 Nhibernate를 찾아야 할 곳을 알려주기에 충분할 것입니다.

<element column="serialNumber" type="long" not-null="true" unique="true"/>

케이스의 경우 열은 태그 제목, 유형은 문자열이며 다른 플래그는 예와 같이 유지됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top