Hibernate: la Migration à partir de la cartographie pour annotations - est-il possible de mélanger des hbm et d'annotation?
Je suis actuellement à la migration de mon projet de mise en veille prolongée HBM Mappages pour les Annotations.
Tout a été facile, j'ai traité avec de petites classes.
Mais j'ai même énorme classes et j'essaie de mélanger à la fois de la cartographie et des annotations pour cette classe. J'ai lu que c'était possible à l'aide de la propriété hibernate "mise en veille prolongée.la cartographie.la priorité" et la valeur "de la classe, hbm" au lieu de "hbm, de classe". (voir: En mode veille prolongée: est-il possible de mélanger les Annotations et de configuration XML pour une Entité?)
Par exemple, j'ai le Document suivant de la classe:
@Entity
@Table(name="DOCUMENT")
public class Document {
@Column(name="DESCRIPTION")
private String description;
}
et suivantes Document.hbm.xml fichier:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Document" table="DOCUMENT" >
<id name="id" column="DOCUMENT_ID" type="long" />
</class>
</hibernate-mapping>
Dans mon hibernate.cfg.xml fichier j'ai mis:
<property name="hibernate.mapping.precedence">class, hbm</property>
<mapping class="Document"/>
<mapping resource="Document.hbm.xml"/>
Mon problème est que:
- si j'ai mis "de la classe, hbm" pour la priorité que j'ai ensuite mes annotations dans la classe de Document
- si j'ai mis "hbm, de classe" alors que j'ai SEULEMENT mon mappages dans le hbm ressource
Personne ne sait si il existe un moyen d'avoir à la fois des Annotations et des HBM mappages ?
Grâce
Kamran
PS: j'utilise : mise en veille prolongée 4.1.4 et Framework Spring 3.1.1
OriginalL'auteur marcam | 2012-07-04
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas mélanger de la même classe. À la fin de la section 1.2 de hibernate annotations:
Vous pouvez mélanger annoté les classes persistantes et classique hbm.cfg.xml des déclarations avec la même SessionFactory. Vous pouvez toutefois de ne pas déclarer une classe à plusieurs reprises (si annoté ou par le biais de hbm.xml). Vous ne pouvez pas mélanger des stratégies de configuration (hbm vs annotations) dans une entité de la hiérarchie.
Pour faciliter le processus de migration de fichiers hbm pour les annotations, la configuration du mécanisme détecte la cartographie des doubles emplois entre des annotations et des fichiers hbm. HBM fichiers sont ensuite prioritaires par rapport annoté métadonnées sur une classe à la classe de base. Vous pouvez modifier la priorité de l'utilisation d'hibernate.la cartographie.la priorité de la propriété. La valeur par défaut est hbm, de classe, de le changer de classe, hbm donnera la priorité aux classes annotées sur hbm les fichiers lorsqu'un conflit se produit.
À l'aide d'annotations et des fichiers hbm est la déclaration d'une classe à deux reprises. Par conséquent, une priorité sur les autres dans une classe à la classe de base (classe à la classe de base signifie que pour chaque classe, seuls les hbm fichier ou les annotations sont utilisées).
Mec très utile
OriginalL'auteur Pablo