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

Java EE Discussion :

Problème de cast avec @NamedQuery


Sujet :

Java EE

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 84
    Points : 65
    Points
    65
    Par défaut Problème de cast avec @NamedQuery
    Salut

    j'ai créé deux classes: victimeDAOImpl et victimeDAOInterf
    je fais le test avec JUnit de la methode : getVictimeById et ça retourne une erreur
    ci dessous les données suivantes:
    _les deux classes : VictimeDaoImpl.java et VictimeDaoInterf.java
    _la classe : Victime.java
    _la classe de test VictimeDaoTest.java

    Code Victime.java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    @Entity
    @NamedQuery(name = "Victime.ById", query = "from Victime where victimeId = :victimeId")
    @Table(name="victime" ,schema="testdb")
    public class Victime implements Serializable {
     
    	 @Id
    	 @GeneratedValue
    	 @Column(name="victime_id")
    	 private int victimeId;
     // code omitted

    Code VictimeDaoInterf.java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public interface VictimeDAOInterf {
     
    			public Victime getVictimeById(int victimeId) throws DataAccessException;
    			public Victime getVictimeByMatricule( String victimeMatricule) throws DataAccessException;
     
    			public List<Victime> getAllVictimes() throws DataAccessException;
     
    			public  void  saveVictime(Victime v) throws DataAccessException;
    			public  void removeVictime(Victime v) throws DataAccessException;
    			public  void updateVictime(Victime v) throws DataAccessException;						
    }
    Code victimeDaoImpl.java : 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
     
     
    @Transactional
    @Repository("victimeDao")
    public class VictimeDAOImpl implements VictimeDAOInterf {
     
    		private SessionFactory sessionFactory;
     
     
    		public SessionFactory getSessionFactory() {
    			return sessionFactory;
    		}
    		@Autowired
    		public void setSessionFactory(SessionFactory sessionFactory) {
    			this.sessionFactory = sessionFactory;
    		}
     
     
    	@Override
    	public Victime getVictimeById(int victimeId) {
    		return (Victime) sessionFactory.getCurrentSession().getNamedQuery("Victime.ById").setParameter("victimeId", victimeId);
    	//return (Victime) sessionFactory.getCurrentSession().get(Victime.class, victimeId);
    	}
     
    // code omitted
    et la classe de JUnit :
    Code VictimeDaoTest : 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
     
    public class VictimeDAOTest {
     
    	   private static ApplicationContext ctx = null;
    	   private static Victime record = null;
    	   private static VictimeDAOInterf dao = null;
     
     
     
    	@BeforeClass
    	public static void setUpBeforeClass() throws Exception {
     
    		ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    		dao = (VictimeDAOInterf) ctx.getBean("victimeDao");
     
    	}
     
    	@After
    	public void tearDown() throws Exception {
    		  dao = null;
    	}
     
    	@Test
    	public void testGetVictimeById() {
    		 Victime record = dao.getVictimeById(1);
    		   assertNotNull(record);
    		   assertEquals(1,record.getVictimeId());
    		   System.out.println(record+"\n");
     
    	}
    //code omitted
    voici l'erreur de JUnit:
    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
     
    java.lang.ClassCastException: org.hibernate.impl.QueryImpl cannot be cast to org.ocpgroup.domain.model.Victime
    	at org.ocpgroup.dao.impls.VictimeDAOImpl.getVictimeById(VictimeDAOImpl.java:33)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    	at $Proxy30.getVictimeById(Unknown Source)
    	at org.ocpgroup.dao.impls.VictimeDAOTest.testGetVictimeById(VictimeDAOTest.java:55)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    	at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    S'il vous plait j'ai besoin de votre aide

  2. #2
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Je ne suis pas certain que tu aies besoin de notre aide. Tu as surtout besoin de lire tranquillement la javadoc.
    Tu as juste créé une query, ensuite tu as oublié de l'exécuter. Tu dois appeler getUniqueResult() pour obtenir une victime.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 84
    Points : 65
    Points
    65
    Par défaut
    vous avez raison , je devais ajouter le uniqueResult() ,ça marchait maintenant
    je vous remercie beaucoup Monsieur ALEXIS .
    concernant votre remarque (de la javadoc) je concède que vous avez raison , sauf que étant donné que je suis en PFE(et prochainement une soutenance devant le jury) ,j'ai peur de ne pas terminer mon projet à temps.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de cast avec LinqToSQL
    Par XatOr dans le forum Linq
    Réponses: 5
    Dernier message: 10/06/2010, 16h27
  2. [débutant] Problème de Cast avec des vector
    Par syl55 dans le forum Langage
    Réponses: 9
    Dernier message: 20/05/2009, 11h04
  3. problème de cast avec CORBA
    Par Irafelo dans le forum Langage
    Réponses: 3
    Dernier message: 12/12/2008, 18h02
  4. Problème de cast avec un wxMenu
    Par mister3957 dans le forum wxWidgets
    Réponses: 3
    Dernier message: 09/09/2008, 11h41
  5. Problème de cast avec l'outil de génération de requetes VS2005
    Par rabddoul dans le forum Accès aux données
    Réponses: 1
    Dernier message: 22/02/2007, 14h19

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