6

ho creato una vista che verrà utilizzato per il recupero dei dati con (in sola lettura)Per mappare una vista di database senza chiave primaria, nella mappatura XML Hibernate

Vista: Grid_View

> Il mio Hibernate file di HBM

<hibernate-mapping> 
    <class name="hibernate.domain.View" table="Grid_View" mutable="false"> 
     <property name="ACCT_BR_CD" type="string"> 
      <column name="ACCT_BR_CD"/> 
     </property> 
     <property name="ACCT_NO" type="string"> 
      <column name="ACCT_NO"/> 
     </property> 
     <property name="LGL_ENTY_NM" type="string"> 
      <column name="LGL_ENTY_NM"/> 
     </property> 
     <property name="CUST_CTRY_CD" type="string"> 
      <column name="CUST_CTRY_CD"/> 
     </property> 
     <property name="ACCT_SRC_SYS_CD" type="string"> 
      <column name="ACCT_SRC_SYS_CD"/> 
     </property>  
    </class> 
</hibernate-mapping> 

> Dal momento che la loro non è una chiave primaria a mio avviso, non ho menzionato il campo id nella mia mappatura. Ma è richiesto l'ID di ibernazione.

> La mia domanda

Come procedere con la mappatura, senza id nel file di mapping Hibernate. E non ci sono colonne con valori unici, quindi non c'è alcuna possibilità di farne la chiave. Si prega di aiutare a risolvere questo problema

risposta

4

Hai due opzioni o aggiungere Composite chiave o aggiungere

<id column="ROWID" type="string" /> 

Hibernate bisogno chiave unica per mappare. Il miglior approccio è aggiungere la chiave primaria.

+0

Ma nessuna colonna ha dati univoci. – Dev

+1

Quindi è possibile aggiungere una colonna "Incremento automatico" nella tabella. È consigliabile l'approccio poiché la funzionalità di ibernazione non funzionerebbe senza ID univoco come il metodo findById e il mapping tra le tabelle. Ecco perché hibernate force for make ID. E nell'opzione dell'ID puoi aggiungere una chiave composita e includere tutta la colonna in quella chiave composita, che funzionerà. – commit

+0

Thanks.Its risolto – Dev