Pergunta

I têm o seguinte mapeamento de hibernação, que tem de ser mapeados usando a Tabela por Betão Classe Hierarquia:

<hibernate-mapping package='dao'>
    <meta attribute='class-description'></meta>
    <class name='PropertyDAO'>
        <id name='id' column='id_property'>
            <generator class='assigned'/>
        </id>
        <property name='address' column='address' type='string'/>
        <union-subclass name='HouseDAO' table='house'>
            <property name='noOfRooms' column='noOfRooms'/>
            <property name='totalArea' column='totalArea'/>
            <property name='price' column='price'/>
        </union-subclass>
        <union-subclass name='LandDAO' table='land'>
            <property name='area' column='area'/>
            <property name='unitPrice' column='unitPrice'/>
        </union-subclass>
    </class>
</hibernate-mapping>

O que significa no banco de dados só tenho 2 tabelas:

  • casa (id_property (PK), endereço, noOfRooms, totalArea, preço)
  • terra (id_property (PK), endereço, área, PreçoUnitário)

Tanto quanto eu entendi, neste caso, os ids precisam ser geradas explicitamente antes de chamar .Save (), então a minha pergunta é: Como posso criar uma estratégia para a geração automática dos ids, de modo que os ids de a classe concreta formar um domínio contínuo quando se juntou.

Foi útil?

Solução 3

A solução é criar outra tabela que armazena a próxima id; este valor deve ser modificado cada vez que um usuário quer inserir uma nova entidade. Desta forma, o domínio é contínua

Outras dicas

IMHO seu modelo no DB é errado, como você tem informações redundantes em várias tabelas que estão relacionadas.

Tabela por classe concreta é um modelo de herança que dá problemas em tempo de execução, como você pode ter uma situação em que uma atualiza o endereço de Terra, mas não de casa, enquanto eles são o mesmo (semanticamente). Iow: Gota este modelo e introduzir a tabela por subclasse, então você tem uma tabela de base de propriedade com ID e endereço e duas mesas separadas com uma PK que é uma FK à pk da base de propriedade, um é casa com os campos casa específicos , o outro é a terra com os campos específicos terra.

Isso lhe dará o menor número de problemas, uma vez que é a maneira de herança converso entre tipos de entidade para tabelas relacionais (ver livros de Nijssen / Halpin cerca NIAM / ORM)

Eu usei o seguinte com juntou-subclasse

<key column="id"/>

Isto deve fazer subclasses usar os ids da tabela de propriedade desde que é dependente dele. (Super) A coluna refere-se à coluna na classe sub-rotina que é uma referência externa para a super.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top