2009-05-27 11 views
0

Je me demande comment écrire le modèle, hbm.xml pour la tablehiberner un à un ou un composant?

Company 
------- 
id(PK) 
name 
address 
typeid(fk) 

Type 
---- 
id(PK) 
type 

class Company(){ 
int id; 
String name; 
String address; 
Type type; 
} 

class Type(){ 
int id; 
String type; 
} 

(avec des méthodes get/set)

Comment écrire le HBM? J'utilise le hibernate 3.x.

Répondre

1

Pouvez-vous avoir plusieurs sociétés du même type? Vous ne voulez pas vraiment une relation à plusieurs?

Que diriez-vous quelque chose comme ça (adapté de la documentation Hibernate de here):

<class name="Company" table="company"> 
    <id name="id" column="id"> 
    ... 
    </id> 
    .... 
    <many-to-one name="type" 
     class="Type" 
     column="typeid" 
     not-null="true"/> 
</class> 

<class name="Type"> 
    <id name="id" column="id"> 
     ... 
    </id> 
</class> 
0
<class name="Company" table="company"> 
<id name="id" column="id"> 
    <generator class="foreign"> 
     <param name="property">type</param> 
    </generator> 
</id> 
... 
<one-to-one name="type" 
    class="Type" 
    constrained="true"/> 
</class> 

Plus de détails here.

+0

Dans ce cas, l'entreprise obtient l'identifiant de type, ce qui est étrange, car il pourrait y avoir un autre à -un, ou il pourrait être nul. –

+0

La question posée pour one-to-one, c'est pourquoi cela a été suggéré. –

1

la situation donnée est un nombre à une situation, car 1 type peut être attribué à plusieurs sociétés

0

Il est pas évident, mais il est tout droit mappée avec many-to-one.

<class name="Company" table="company"> 
<id name="id"> 
    <generator class="native"> 
     <param name="sequence">Company_SEQ</param> 
    </generator> 
</id> 
... 
<many-to-one 
    name="type" 
    class="Type" 
    constrained="true"/> 
</class> 
Questions connexes