2011-09-20 5 views
1

최대 절전 모드를 처음 사용하기 때문에 쉬운 조언을 요청하면 용서하십시오.
현재 xml (주석 없음)을 사용하여 클래스를 매핑하고 있지만 테이블에 ID가 없지만 누군가가 최대 절전 모드를 사용하여 ID를 사용하도록 강요한다고 말하면 SMS_MONITORING_ID 필드를 만들었습니다 테이블에 내가 다음과 같이 매핑 해요 : 나는 이미 내 오라클 데이터베이스 (ID_SMS_MONITORING)에 시퀀스를 만들어최대 절전 모드에서 ID를 피하십시오

<class name="smsbox.dal.model.SmsMonitoring" table="MST_SMS_MONITORING"> 
    <comment></comment> 

    <id name="smsMonitoringId" type="long"> 
     <column name="SMS_MONITORING_ID" /> 
     <generator class="native" > 
      <param name="sequence">ID_SMS_MONITORING</param> 
     </generator> 

    </id> 

, 나는 그 모든 ID를 처리 최대 절전 모드 싶지 않아, 난 싶습니다 내 자바 코드에서 ID에 대한 참조를 피하기 위해 (객체를 저장할 때).
ID 할당시 전체 프로세스를 최대 절전 모드로 만드는 것을 어떻게 할 수 있습니까?

추신 : 나는 오라클 "숫자"타입으로 id (long)을 매핑하고 있는데, 가능한 문제 (긴 숫자는 숫자에 맞거나 그 반대)를 피하는 규칙은 누구나 나에게 링크를 제공 할 수있다. Hibernate와 Oracle DB 매핑 유형을 잘 설명했다. 당신은 그나마

<generator class="sequence"> 
     <param name="sequence">YourSquenceName</param> 
     </generator> 

최대 절전으로 개체를 저장 은, 설정/ID를 가져가 다음과 같은 아이디 생성기를 선언하고 그냥 널 id 필드를 떠나 시도 할 수
감사

답변

0

, Hibernate는 당신의 시퀀스로부터 유효한 id를 얻을 것이다.

1

불행히도 매핑 된 모든 엔터티에는 모든 관계형 데이터베이스에서 요구하는 ID가 매핑되어야합니다.

ID는 개체를 유지할 때만 개체에 할당되므로 최대 절전 모드에서 시퀀스를 사용해야합니다. 두 개 이상의 객체가 있고 그것의 ID가 null이고 equals와 hashcode 함수가 ID만을 사용하고 있다면, 두 객체는 ​​모두 Hibernate에서 같고, 두 객체가 모두 동일하기 때문에 ID보다 많은 매개 변수로 equals와 hashcode 함수를 생성해야합니다. 코드에서 많은 문제를 일으키는 근본 원인.

+0

실제로 ID는 필요하지 않지만 일종의 키, 가능하게는 복합 키가 필요합니다. 업데이트를 원한다면 물론 고유해야합니다. 그러나 ID가 단일 열이거나 숫자가 될 이유는 없습니다. – extraneon

+0

나는 당신과 동의하지 않는다. 최대 절전 모드에 따르면 각 테이블에 프라이 머리 키가 있어야하며 프라이 머리 키는 항상 유일하지만, 어떤 타입의 프라이 머리 키라도 합성 할 수있다. –

관련 문제