Bonjour,
Voici mon problème : J'ai une classe abstraite Tiers, plusieurs filles, prenons par exemple Client. Cette classe Client doit avoir une relation manyToOne vers Tiers.
J'obtiens un message comme quoi la table de liaison n'est pas trouvée (alors que j'ai <property name="hibernate.hbm2ddl.auto" value="update" /> dans persistence.xml).
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 @Entity @Table(name="tiers", catalog="test") @Inheritance(strategy=InheritanceType.JOINED) @DiscriminatorColumn(name = "DISC", discriminatorType = DiscriminatorType.STRING, length = 15) public abstract class Tiers implements Serializable{ @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="idTiers") private Long idTiers; @Column private String nom; // accesseurs .... } @Entity @Table(name="client", catalog="test") public class Client extends Tiers{ private static final long serialVersionUID = 5251341341347181655L; @Column private String referenceClient; @ManyToOne @JoinTable( name="client_donneurOrdre", catalog="test", joinColumns=@JoinColumn(name="idTiers", referencedColumnName="idTiers"), inverseJoinColumns=@JoinColumn(name="idDonneurOrdre", referencedColumnName="idTiers", nullable=false) ) private Tiers donneurOrdre; // accesseurs.... }
Soit, je créais la table de liaison à la main...
CREATE TABLE `test`.`client_donneurOrdre` (
`idTiers` BIGINT(11) NOT NULL,
`idDonneurOrdre` BIGINT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`idTiers`, `idDonneurOrdre`)
)
ENGINE = InnoDB;
Le résultat est le même :
ERROR [AssertionFailure] an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
org.hibernate.AssertionFailure: Table test.client_donneurOrdre not found
Si j'enlève la relation manyToOne, l'héritage fonctionne correctement. Je comprends vraiment pas ce qu'il ne va pas...
Merci de votre aide.
Partager