IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

Avoir une entité comme clé primaire d'une autre entité


Sujet :

JPA Java

  1. #1
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut Avoir une entité comme clé primaire d'une autre entité
    Bonjour,

    J'ai 2 entités, dont une doit être la clé primaire de l'autre.
    L'entité principale :
    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
     
    @Entity
    @Table(name = "dbo.EMP_EMPLOYE")
    public class Employe extends BusinessEntite {
     
    	@Id
    	@Column(name = "ID", nullable = false)
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	private int id;
     
    	@Column(name = "LOGIN", length = 30, nullable = false, unique = true)
    	private String login;
     
    	@Column(name = "MOT_DE_PASSE", length = 65, nullable = false)
    	private String motDePasse;
     
    	....
    }
    Et la secondaire, qui doit avoir la première en PK
    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
     
    @Entity
    @Table(name = "dbo.EMP_EMPLOYE_PHOTO")
    public class EmployePhoto {
     
    	@Id
    	@OneToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "EMP_EMPLOYE_ID", nullable = false)
    	private Employe employe;
     
    	@Column(name = "PHOTO", nullable = true)
    	private byte[] photo;
     
    	....
    }
    Lorsque je veux générer le script de ma DB avec hibernate j'ai l'erreur suivante et je ne sais pas quoi faire.

    [hibernatetool] An exception occurred while running exporter #2:hbm2ddl (Generates database schema)
    [hibernatetool] To get the full stack trace run ant with -verbose
    [hibernatetool] Problems in creating a configuration for JPA. Have you remembered to add hibernate EntityManager jars to the classpath ?
    [hibernatetool] java.lang.reflect.InvocationTargetException
    [hibernatetool] javax.persistence.PersistenceException: java.lang.NullPointerException

    at org.hibernate.tool.ant.JPAConfigurationTask.createConfiguration(JPAConfigurationTask.java:42)
    at org.hibernate.tool.ant.ConfigurationTask.getConfiguration(ConfigurationTask.java:54)
    at org.hibernate.tool.ant.HibernateToolTask.getConfiguration(HibernateToolTask.java:287)
    at org.hibernate.tool.ant.Hbm2DDLExporterTask.execute(Hbm2DDLExporterTask.java:45)
    at org.hibernate.tool.ant.HibernateToolTask.execute(HibernateToolTask.java:171)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:36)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:452)
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:139)
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.hibernate.tool.ant.JPAConfigurationTask.createConfiguration(JPAConfigurationTask.java:28)
    ... 19 more
    Caused by: javax.persistence.PersistenceException: java.lang.NullPointerException
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:247)
    ... 24 more
    Caused by: java.lang.NullPointerException
    at org.hibernate.util.StringHelper.qualify(StringHelper.java:264)
    at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:196)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1054)
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1039)
    at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1211)
    at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:847)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:178)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:235)
    ... 24 more
    Je n'ai rien trouvé sur comment mettre une entité en clé primaire d'une autre entité.
    Qqun peut-il m'aider à résoudre ce problème ?


    Merci d'avance pour votre aide

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 25
    Points : 32
    Points
    32
    Par défaut
    Bonjour doons,

    Si je comprends bien ton problème, on appelle ceci "clé composite". Etant donné que tu utilise JPA(et ses annotations), tu pourras procéder par exemple en déclarant ta première classes avec l'annotation @Embeddable et ensuite dans la seconde classe tu "l'injecte" avec l'annotation @EmbeddedId comme clé primaire.

    j'espère te donner un coup de pouce!!

    Fioko

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/11/2015, 12h52
  2. insérer une image comme objet ole dans une table
    Par Loutron dans le forum Modélisation
    Réponses: 4
    Dernier message: 29/12/2011, 19h11
  3. Désignation d'une variable comme clé primaire
    Par Kruttie dans le forum SAS Base
    Réponses: 1
    Dernier message: 18/11/2009, 12h24
  4. Réponses: 13
    Dernier message: 23/05/2008, 17h41
  5. [MySQL] Récupérer la clé primaire d'une table et l'insérer dans une autre
    Par dorian67 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 31/10/2006, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo