2013-03-25 3 views
0

뷰를 만들었습니다.뷰를 최대 절전 모드 엔터티에 매핑하는 동안 오류가 발생했습니다.

CREATE VIEW VW_LOSA_APP_PENDING AS 
SELECT distinct app.APP_REF_NO, app.APP_STATUS, app.APP_DT, app.ATTEND_STAFF, 
       app.ATTEND_BRANCH, app.PRODUCT_TYPE APP_PRODUCT_TYPE, 
       cust.CUST_ID, cust.APP_JOINT_T, cust.ID1_TYPE, cust.ID1, 
       cust.ID2_TYPE, cust.ID2, cust.FIRST_NAME, cust.LAST_NAME, 
       cust.FULL_NAME, cust.FULL_NAME_CAP, cust.DOB, fac.FACILITY_NO, 
       fac.PRODUCT_TYPE FAC_PRODUCT_TYPE, fac.PRODUCT_CODE, 
       fac.MAIN_PROD_IND, fac.AMT_APPLIED 
    FROM 
     LOSA_APP app 
    LEFT JOIN 
     LOSA_CUST cust 
    ON 
     cust.APP_REF_NO = app.APP_REF_NO 
    LEFT JOIN 
     LOSA_FACILITIES fac 
    ON 
     fac.APP_REF_NO = app.APP_REF_NO 
    LEFT JOIN 
     OS_CURRENTSTEP STEP 
    ON 
     STEP.REF_ID = app.APP_REF_NO 
    WHERE (app.APP_STATUS ='P' OR app.APP_STATUS ='T' OR 
     ((app.APP_STATUS='R' OR app.APP_STATUS='S') AND STEP.STEP_NAME='011')); 

이제이 뷰를 최대 절전 모드 파일에 매핑하려고합니다. 내가 무엇입니까 왜하지만 난 라인

<class name="com.thetasp.losa.data.VwLosaAppPending" table="VW_LOSA_APP_PENDING" optimistic-lock="version"> 

에서 내지도 여기

enter image description here

내가 정의하고 어떻게

<hibernate-mapping default-lazy="false"> 
<class name="com.thetasp.losa.data.VwLosaAppPending" table="VW_LOSA_APP_PENDING" optimistic-lock="version">  

    <property name="appRefNo" type="java.lang.String" column="APP_REF_NO" not-null="true" length="20" /> 
    <property name="appStatus" type="java.lang.String" column="APP_STATUS" length="20" /> 
    <property name="appDt" type="java.sql.Timestamp" column="APP_DT" not-null="true" length="23" /> 
    <property name="attendStaff" type="int" column="ATTEND_STAFF" not-null="true" length="10" /> 
    <property name="attendBranch" type="int" column="ATTEND_BRANCH" not-null="true" length="10" /> 
    <property name="appProductType" type="java.lang.String" column="APP_PRODUCT_TYPE" length="10" /> 
    <property name="custId" type="java.lang.String" column="CUST_ID" length="20" /> 
    <property name="appJointT" type="java.lang.String" column="APP_JOINT_T" length="10" /> 
    <property name="id1Type" type="java.lang.String" column="ID1_TYPE" length="1" /> 
    <property name="id1" type="java.lang.String" column="ID1" length="20" /> 
    <property name="id2Type" type="java.lang.String" column="ID2_TYPE" length="1" /> 
    <property name="id2" type="java.lang.String" column="ID2" length="20" /> 
    <property name="firstName" type="java.lang.String" column="FIRST_NAME" length="100" /> 
    <property name="lastName" type="java.lang.String" column="LAST_NAME" length="100" /> 
    <property name="fullName" type="java.lang.String" column="FULL_NAME" length="250" /> 
    <property name="fullNameCap" type="java.lang.String" column="FULL_NAME_CAP" length="250" /> 
    <property name="dob" type="java.sql.Date" column="DOB" length="23" /> 
    <property name="facilityNo" type="java.lang.Long" column="FACILITY_NO" /> 
    <property name="facProductType" type="java.lang.String" column="FAC_PRODUCT_TYPE" length="10" /> 
    <property name="productCode" type="java.lang.String" column="PRODUCT_CODE" length="20" /> 
    <property name="mainProdInd" type="java.lang.String" column="MAIN_PROD_IND" length="1" /> 
    <property name="amtApplied" column="AMT_APPLIED" length="18"> 
     <type name="com.thetasp.common.hibernate.support.ParameterizedDoubleType" /> 
    </property> 

</class> 

나는 점점 오전 오류 오류가 발생하고 이 오류? 내가 뭘 잘못하고있어?

감사

답변

0

메시지는 다음과 같습니다 당신은 당신의 클래스 정의의 모든 ID 또는 복합-id 요소가없는

The content of element type "class" must match "([...], (id, composite-id), [...]) 

.

+0

일반적으로 테이블의 기본 키에는 id 요소를 사용합니다. 그러나 이것은보기이며보기에는 기본 키가 없습니다. 그래서 내 재산 ID를 만들면 괜찮습니까? ... like''괜찮습니까? – Basit

+0

모든 엔티티에 ID가 있어야합니다. 데이터베이스에서 PK가 될 필요는 없지만 뷰에서 행을 고유하게 식별해야하고 변경할 수 없어야합니다. 귀하의보기 definitin 감안할 때, 나는 여러 행을 동일한 APP_REF_NO 것입니다, 그래서 당신은 ID로 사용할 수 없다고 가정합니다. –

관련 문제