Hibernate version: 3.1
Name and version of the database you are using:
Base de données utilisée : SQL Server
IDE utilisé : Eclipse 3.1
Code between sessionFactory.openSession() and session.close():
Code:
tx = session.beginTransaction();
Entreprise e = (Entreprise)session.get(Entreprise.class, new Integer(1));
System.out.println("Sortie : " + e.getRaisonSociale());
tx.commit();
}
Full stack trace of any exception that occurs:Code:
java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:869)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:838)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
at org.hibernate.type.EntityType.resolve(EntityType.java:303)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:113)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:93)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:81)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:869)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:806)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799)
at Modifier.main(Modifier.java:29)
Voilà, ces petites informations précisées, j'ai trois tables vraiment très simples, Entreprise, Salarié et Divers.
Une relation existe entre Entreprise et Salarié, et une autre entre Salarié et Divers.
J'ai généré mes mappings et mes classes java dans Eclipse avec Hibernate Tools.
J'ai créé une classe java pour tester la connexion à ma base (Modifier.java).
Je lance une requète toute bête :
Entreprise e = (Entreprise)session.get(Entreprise.class, new Integer(1));
System.out.println("Sortie : " + e.getRaisonSociale());
Avec la table (Classe) Entreprise, ça marche nickel.
Par contre aves les 2 autres tables (Salarié et Divers) j'ai le message ci-dessus. Précision : dans ma requète je remplace par exemple Entreprise par Salarié et je mets à jour dans le println pour une méthode Get correspondant à un champ de la table correspondante.
Suite à ça, j'ai supprimé les relations entre les tables.
Je regénère tous les mappings et les classes.
Je relance mon programme de test, et là tout marche !!!
Comment cela se fait il que les relations entre mes tables puisse gêner le lancement de mes requète HQL, qui sont vraiment des plus simples !!
Merci pour votre aide.