Comment puis-je configurer les mappages d'héritage Hibernate à l'aide d'annotations Java? Quels sont les avantages de l'utilisation de l'héritage dans les annotations?Héritage des annotations Hibernate?
Répondre
C'est une question très générale, mais je vous conseille de jeter un oeil sur les ressources suivantes:
- The documentation on how inheritance is declared via Hibernate annotations.
- This PDF file (chapitre 2 d'un livre sur Hibernate). La page 38 traite les annotations Hibernate.
Mais la réponse très basique à votre question est que vous devez utiliser l'annotation @Inheritance
, comme ceci:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Flight implements Serializable {
...
}
Oui parce que j'étudie pour l'apprendre. Je suis étranger à ce sujet. Mon oignon est mélange. Alors merci pour les ressources. – stical
Je suggère d'utiliser l'annotation @Inheritance sur la @MappedSuperclass. Nous avons eu des problèmes dans le passé avec @MappedSuperclass étant assez flexible pour nos besoins de maintenance en cours.
Matt, pourriez-vous s'il vous plaît suggérer quels étaient les problèmes avec MappedSuperClass, comme nous l'avons largement utilisé dans notre application. – Achow
3 types possibles:
1. Une seule table par stratégie de hiérarchie de classes:
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn( name="planetype",
discriminatorType=DiscriminatorType.STRING )
@DiscriminatorValue("Plane")
public class Plane { ... }
@Entity
@DiscriminatorValue("A320")
public class A320 extends Plane { ... }
<hibernate-mapping>
<subclass name="DomesticCat" extends="Cat" discriminator-value="D">
<property name="name" type="string"/>
</subclass>
- Avantages:. Simplest Non JOINs requis
- Inconvénients: Impossible d'utiliser des valeurs nulles. Le nombre de colonnes augmente avec la profondeur du graphique Objet.
2. stratégie sous-classe Inscrit le:
Tables de base de données
CREATE TABLE SUPER_TABLE(
id_col number primary key,
sup_Name varchar2(20));
CREATE TABLE SUB_TABLE(
SUP_ID primary key,
sub_name varchar2(20),
constraint SUB_TABLE_fk foreign key (sup_Id) references super_table(id_col));
@Entity
@Table(name= "SUPER_TABLE")
@Inheritance(strategy= InheritanceType.JOINED)
public class TestSuperClass {
@Id
@GeneratedValue(
strategy=GenerationType.SEQUENCE,
generator="SEQ_GEN")
@SequenceGenerator(
name="SEQ_GEN",
sequenceName="hibernate_sequence"
)
@Column(name ="id_col")
private long idcol;
@Column(name ="sup_name")
private String supName;
@Entity
@Table(name="SUB_TABLE")
@PrimaryKeyJoinColumn(name="SUP_ID")
<class name="Payment" table="PAYMENT">
<id name="id" type="long" column="PAYMENT_ID">
<generator class="native"/>
</id>
<property name="amount" column="AMOUNT"/>
...
<joined-subclass name="CreditCardPayment" table="CREDIT_PAYMENT">
<key column="PAYMENT_ID"/>
<property name="creditCardType" column="CCTYPE"/>
...
</joined-subclass>
<joined-subclass name="CashPayment" table="CASH_PAYMENT">
<key column="PAYMENT_ID"/>
...
</joined-subclass>
public class TestSubClass extends TestSuperClass{
private String sub_name;
}
Module de test
TestSubClass sub = new TestSubClass("sub1");
sub.setSupName("supersuper"); session1.save(sub);
SQL généré
Hibernate: insert into SUPER_TABLE (sup_name, id_col) values (?, ?)
Hibernate: insert into SUB_TABLE (sub_name, SUP_ID) values (?, ?)
- Pour: Structures de données normalisées. Contre: JOINS sont toujours reqd.
3. Tableau par stratégie de classe concrète:
create table CREDIT_CARD(payment_id number primary key, amount
number, creditCardType varchar2(2));
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Payment {
@Id
@GeneratedValue(
strategy=GenerationType.SEQUENCE,
generator="SEQ_GEN")
@SequenceGenerator(
name="SEQ_GEN",
sequenceName="hibernate_sequence"
)
@Column(name = "payment_id")
private long id;
private double amount;
@Entity
@Table(name="CREDIT_CARD")
public class CreditCardPayment extends Payment {
private String creditCardType;
<class name="Payment">
<id name="id" type="long" column="PAYMENT_ID">
<generator class="sequence"/>
</id>
<property name="amount" column="AMOUNT"/>
...
<union-subclass name="CreditCardPayment" table="CREDIT_PAYMENT">
<property name="creditCardType" column="CCTYPE"/>
...
</union-subclass>
module de test
CreditCardPayment credit = new CreditCardPayment("C",1.0);
session1.save(credit);
SQL généré
Hibernate: insert into CREDIT_CARD (amount, creditCardType, payment_id) values (?, ?, ?)
Il y a aussi un @MappedSuperclass que nous avons utilisé en o votre application.
- 1. Annotations Hibernate, auto-incrémenté
- 2. annotations hibernate, requête hql par des interfaces?
- 3. Hibernate Annotations recherche ne Héritée
- 4. Comment puis-je hériter des filtres Hibernate avec des annotations?
- 5. Comment réécrire ce mappage hibernate avec des annotations?
- 6. Mappage d'une clé naturelle avec des annotations Hibernate
- 7. Héritage de classe avec Hibernate et hbm2java
- 8. Hibernate héritage Cartographie et attribut Remplacer
- 9. Est-ce que JasperReports/iReport fonctionne avec les annotations Hibernate?
- 10. Wrong SQL pour l'objet de vue utilisant les annotations Hibernate
- 11. requête de génération Hibernate Annotations qui produit SQLGrammarException
- 12. Annotations ou annotations communément réutilisables?
- 13. Héritage des tests unitaires
- 14. Conversion d'Hibernate hbm.xml en annotations
- 15. Requêtes Hibernate
- 16. Utilisation des annotations PDF dans le code
- 17. Annotations via des applications dans Seam
- 18. JFreeChart Annotations
- 19. annotations Java
- 20. Conversion de la configuration XML en annotations
- 21. Comment puis-je modifier les annotations/règles de validation Hibernate lors de l'exécution?
- 22. Puis-je mapper un ensemble EnumSet à une série de colonnes booléennes automatiquement à l'aide des annotations Hibernate?
- 23. Comment mapper une collection imbriquée, Map <Key, List <Values>>, avec des annotations JPA hibernate?
- 24. java annotations: bibliothèque pour remplacer les annotations avec des fichiers xml
- 25. Annotations XML sérialiser
- 26. Détection automatique des composants à l'aide des annotations de ressort
- 27. Utilisations cool des attributs ou des annotations (CLR ou Java)?
- 28. Explication sur les annotations
- 29. problème annotations javax
- 30. Héritage/Architecture
Votre question n'a pas beaucoup de sens.Pouvez-vous fournir plus d'informations sur votre problème? – Zoman
@Zoman - Si vous cherchez à utiliser l'héritage avec des annotations en hibernation, cette question est juste ce dont vous avez besoin. J'ai juste googlé ces trois mots-clés, et j'ai obtenu la réponse ici. – ripper234