2008-11-29 41 views
0

選擇查詢我有問題,我想幫助我有問題,在JPA

選擇name_magazine從雜誌

,我已經導入所有所需的函數庫

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

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

For(Sting s : result)

System.out.println(s);

但當我運行這個代碼是錯誤的。有人能幫我嗎? THX

這個錯誤,當我運行程序

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

我已經嘗試文森Ramdhanie,格維茲Bjarni建議

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

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

For(Sting s : result)

System.out.print(s);

但仍錯誤

這是什麼庫&變量i使用

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

或許,如果你研究的堆棧跟蹤,因爲發生此異常danvinton建議http://stackoverflow.com/questions/327487/help-i-have-problem-with-select-query-in-jpa#327764 – toolkit 2008-11-29 23:06:21

+0

好的,thx。我會用google搜索 – ferdinand 2008-11-29 23:11:20

回答

2

你可能應該說錯誤是什麼。

但是,假設你有一個實體雜誌那麼查詢應該是:

select m from Magazine m 

如果你希望所有的雜誌。

1

對於這個工作,你需要定義爲這樣的實體:

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

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

    /* 
    * Constructors, getters and setters 
    */ 
} 

另外,你需要一個persistence.xml文件指向您的實體。如果所有這些都已到位,則此查詢應起作用,併爲您提供所有雜誌的列表。

from Magazine m 

您指定的查詢就是一個投影,並與我上面顯示的實體應該是

select m.name from Magazine m 

希望這有助於。 :)

2

答案是正確的,在你的異常調用堆棧:

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

這不是你的雜誌的查詢問題,但另一個畸形查詢 - 可能是一個命名查詢定義的其他地方。

1

您是否重命名過您的課程?

類的名稱可以從命名查詢

0

如果您正在使用JPA然後在查詢,你需要如下

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

Ë寫的className和對象使用的名稱有所不同,是一個對象雜誌課。 如果你面對的,而創造的EntityManager 查詢看看你的persistance.xml文件,你需要在此文件中的持久性單元標記後添加類

<class>PackageName.className</class>