2008-11-29 3 views
0

j'ai problème que je veuxAide J'ai problème avec requête de sélection dans JPA

select name_magazine du magazine

et j'importer déjà toutes les librairies nécessaires

et

Query q = EntityManger.createQuery ("SELECT name_magazine FROM Magazine");

List results = (List) q.getResultList();

For(Sting s : result)

System.out.println(s);

mais quand je cours ce code c'est une erreur. Est-ce que quelqu'un peut m'aider? Thx

cette erreur quand je lance le programme

Exception in thread "AWT-EventQueue-0" java.lang.Error: java.lang.reflect.InvocationTargetException at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859) at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665) at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662) ... 29 more Caused by: java.lang.IllegalArgumentException: An exception occured while creating a query in EntityManager at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.createQuery(EntityManagerImpl.java:209) at tugas_rpl.Tugas_RPLView.Iseng(Tugas_RPLView.java:734) ... 34 more Caused by: Exception [TOPLINK-8034] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.EJBQLException Exception Description: Error compiling the query [Select m.Name from magazine m]. Unknown abstract schema type [magazine]. at oracle.toplink.essentials.exceptions.EJBQLException.unknownAbstractSchemaType(EJBQLException.java:494) at oracle.toplink.essentials.internal.parsing.ParseTreeContext.classForSchemaName(ParseTreeContext.java:163) at oracle.toplink.essentials.internal.parsing.VariableNode.resolveClass(VariableNode.java:280) at oracle.toplink.essentials.internal.parsing.DotNode.resolveMapping(DotNode.java:254) at oracle.toplink.essentials.internal.parsing.DotNode.endsWithDirectToField(DotNode.java:213) at oracle.toplink.essentials.internal.parsing.SelectNode.selectingDirectToField(SelectNode.java:440) at oracle.toplink.essentials.internal.parsing.SelectNode.hasOneToOneSelected(SelectNode.java:265) at oracle.toplink.essentials.internal.parsing.SelectNode.hasOneToOneSelected(SelectNode.java:222) at oracle.toplink.essentials.internal.parsing.SelectGenerationContext.computeUseParallelExpressions(SelectGenerationContext.java:105) at oracle.toplink.essentials.internal.parsing.SelectGenerationContext.(SelectGenerationContext.java:88) at oracle.toplink.essentials.internal.parsing.ParseTree.buildContextForReadQuery(ParseTree.java:382) at oracle.toplink.essentials.internal.parsing.ParseTree.buildContext(ParseTree.java:370) at oracle.toplink.essentials.internal.parsing.EJBQLParseTree.buildContext(EJBQLParseTree.java:68) at oracle.toplink.essentials.internal.parsing.EJBQLParseTree.populateQuery(EJBQLParseTree.java:107) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:219) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:189) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:153) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.(EJBQueryImpl.java:114) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.(EJBQueryImpl.java:99) at oracle.toplink.essentials.internal.ejb.cmp3.EJBQueryImpl.(EJBQueryImpl.java:86) at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.createQuery(EntityManagerImpl.java:204) ... 35 more

J'essaie déjà Vincent Ramdhanie, suggestion Guðmundur Bjarni

Query q = entityManager.createQuery("Select m.name from magazine m");

List result = (List) q.getResultList();

For(Sting s : result)

System.out.print(s);

mais toujours l'erreur

ce que la variable de bibliothèque & j'utilise

private javax.persistence.EntityManager entityManager;

import org.jdesktop.application.Action;

import org.jdesktop.application.ResourceMap;

import org.jdesktop.application.SingleFrameApplication;

import org.jdesktop.application.FrameView;

import org.jdesktop.application.TaskMonitor;

import org.jdesktop.application.Task;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;

import javax.swing.Timer;

import javax.swing.Icon;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import org.jdesktop.beansbinding.AbstractBindingListener;

import org.jdesktop.beansbinding.Binding;

import org.jdesktop.beansbinding.PropertyStateEvent;

import javax.persistence.*;

+0

Peut-être si vous avez étudié le stacktrace, comme danvinton suggère http://stackoverflow.com/questions/327487/help-i-have-problem-with-select-query-in-jpa#327764 – toolkit

+0

Ok, merci. Je vais googler – ferdinand

+0

Ok, Problem Solve. J'ai trouvé l'autre chemin. thx – ferdinand

Répondre

2

Vous devriez probablement dire quelle est l'erreur exactement.

Cependant, en supposant que vous avez une entité Magazine alors la requête doit être:

select m from Magazine m 

Si vous voulez que tous les magazines.

1

Pour que cela fonctionne, vous avez besoin d'une entité définie en tant que telle:

@Entity 
@Table(name = "magazines") 
public class Magazine { 
    /* 
    * Some more attributes 
    */ 

    @Column(name = "name_magazine") 
    private String name; 

    /* 
    * Constructors, getters and setters 
    */ 
} 

De plus, vous avez besoin d'un fichier persistence.xml pointant vers votre entité. Si tout cela est en place, cette requête devrait fonctionner et vous donner une liste de tous les magazines.

from Magazine m 

La requête spécifiée est une projection de cela, et avec l'entité que j'ai montré qu'il devrait être

select m.name from Magazine m 

Hope this helps. :)

2

La réponse est là, dans la pile d'appel à votre exception:

Error compiling the query [Select m.Jenis_Motor from motor m]. Unknown abstract schema type [motor]. 

Ce n'est pas un problème avec votre requête de magazine, mais une autre requête malformée - probablement une requête nommée définie ailleurs.

+0

Exactement raison. +1 – toolkit

1

Avez-vous renommé votre cours?

Le nom de classe peut être différent du nom utilisé dans la requête nommée

0

Si vous utilisez JPA puis dans Query Vous devez écrire className et objet comme suit

Query q = EntityManger.createQuery ("SELECT name_magazine e FROM Magazine e"); 

e est un objet de Classe de magazine. et si vous face à cette exception est survenue lors de la création d'une requête dans EntityManager Vérifiez vos persistance.xml vous devez ajouter fichier classe dans ce fichier après la balise persistence-unit

<class>PackageName.className</class>