Bonjour à tous, je sais pas s'il est possible de mapper une hiérarchie de classe avec la stratégie une table par sous-classe (JOIGNED) avec la possibilité de renommer dans chaque table la colonne identifiante.
En effet, j'a essayé avec l'annotation @Override mais lors de la génération du Modèle relationnel, les tables de la hiérarchie sont tout de même avec le même nom de colonne. Voici ce que j'ai essayé

La classe parente

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
 
/**
 * 
 */
package com.yashiro.hibernate.inheritance.abstractclass;
 
import java.io.Serializable;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
 
/**
 * @author Jean-Jacques
 *
 */
@Entity(name = "Payment")
@Table(name = "PAYMENT")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Payment implements Serializable {
 
	/**
         * le code
         */
	@Id
	@Column(name = "PAYMENT_ID")
	@GeneratedValue(strategy = GenerationType.AUTO)
	protected Long id;
 
	/**
         * ID genere par eclipse
         */
	private static final long serialVersionUID = 1L;
 
	/**
         * Methode d'obtention du montant du Paiement
         * @return      Montant du Paiement
         */
	public abstract Float getPaymentAmount();
 
	/**
         * @return the id
         */
	public Long getId() {
		return id;
	}
 
	/**
         * @param id the id to set
         */
	public void setId(Long id) {
		this.id = id;
	}
 
 
}
La classe fille

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
 
/**
 * 
 */
package com.yashiro.hibernate.inheritance.abstractclass;
 
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
 
 
/**
 * Classe Mère des paiements par Chèque
 * @author Jean-Jacques
 *
 */
@Entity(name = "ChequePayment")
@Table(name = "CHEQUE_PAYMENT")
@AttributeOverrides(
  @AttributeOverride(name = "id", column = @Column(name = "CHEQUE_PAYMENT_ID")))
public abstract class ChequePayment extends Payment {
 
	/**
         * ID genere par Eclipse
         */
	private static final long serialVersionUID = 1L;
 
 
	/**
         * Code du Chèque
         */
	@Column(name = "CHEQUE_CODE")
	private String chequeCode;
 
	/**
         * Montant du paiement
         */
	@Column(name = "CHEQUE_AMOUNT")
	private Float paymentAmount;
 
 
	/**
         * Constructeur par defaut
         */
	public ChequePayment() {}
 
	/* (non-Javadoc)
	 * @see com.yashiro.hibernate.inheritance.IPayment#getPaymentAmount()
	 */
	@Override
	public Float getPaymentAmount() {
 
		// On retourne la Paiement
		return paymentAmount;
	}
 
	/**
         * @return the chequeCode
         */
	public String getChequeCode() {
		return chequeCode;
	}
 
	/**
         * @param chequeCode the chequeCode to set
         */
	public void setChequeCode(String chequeCode) {
		this.chequeCode = chequeCode;
	}
 
	/**
         * @param paymentAmount the paymentAmount to set
         */
	public void setPaymentAmount(Float paymentAmount) {
		this.paymentAmount = paymentAmount;
	}
 
 
}
Et voici le DDL que le Schema Exporter génère

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
create table CHEQUE_PAYMENT (
        PAYMENT_ID bigint not null,
        CHEQUE_CODE varchar(255),
        CHEQUE_AMOUNT float,
        primary key (PAYMENT_ID)
    ) type=InnoDB;
 
 create table PAYMENT (
        PAYMENT_ID bigint not null auto_increment,
        primary key (PAYMENT_ID)
    ) type=InnoDB;
 
alter table CHEQUE_PAYMENT 
        add index FKFC6F99C8F9BE5950 (PAYMENT_ID), 
        add constraint FKFC6F99C8F9BE5950 
        foreign key (PAYMENT_ID) 
        references PAYMENT (PAYMENT_ID);
Moi j'aimerais plutot que le code de la table CHEQUE_PAYMENT soit plutot CHEQUE_PAYMENT_ID.

Quelqu'un saurait-il comment le faire?????