2016-07-26 4 views
1

У меня есть файл AbstractAccount hbm, где я установил accountNumber как primarykey. Я расширяю этот класс в своем файле Account.hbm.xml, где я хочу проехать этот первичный ключ как countryCode и accountNumbercomposite key. Как я могу это сделать?Переопределить первичный ключ в подклассе hibernate

Abstract.hbm.xml файл.

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class name="com.*.*.*.AbstractAccount" 
    abstract="true" 
    table="ACCOUNT" 
    lazy="false"> 
     <id name="accountNumber" type="java.lang.String"> 
      <column name="ACCOUNT_NUMBER" length="16" /> 
      <generator class="assigned" /> 
     </id> 
     <discriminator column="ACCOUNT_TYPE" type="string"/> 
     ................ 
    </class> 
</hibernate-mapping> 

Account.hbm.xml

<property name="modifiedDate" type="java.util.Date"> 
     <column name="MODIFIED_DATE"/> 
    </property> 
    <property name="countryCode" type="java.lang.String"> 
     <column name="COUNTRY_CODE"/>    
    </property> 
    ............... 
</subclass> 

Я попытался с добавлением составного ключа, как показано ниже, но он не работает.

<composite-id name="account_country"> 
<key-property name="countryCode" column="COUNTRY_CODE" /> 
<key-property name="accountNumber" column="ACCOUNT_NUMBER" /> 
</composite-id> 
+0

вы можете использовать <состыкованных подкласс> в Abstract.hbm.xml – Gokul

+0

@Gokul Можете ли вы быть более конкретным, как может я использую здесь. В любом случае я не могу изменить структуру наследования. –

ответ

0

Abstract.hbm.xml

<hibernate-mapping> 
    /* Abstract class properites */ 

    <joined-subclass name="Account" table="tablename"> 

    /* Account class properites */ 

    </join-subclass> 
</hibernate-mapping> 
+0

сохранить первичный ключ и некоторое общее свойство в обоих классах – Gokul

+0

Я не могу изменить файл Abstract.hbm.xml. Его часть большого проекта и использование многих в проектах, а также его проведение другой командой. Я хочу «переопределить» его в 'account hbm', вот в чем вопрос. Спасибо за ответ. –