java 帮助我在 JPA 中选择查询时遇到问题
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/327487/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Help I have problem with select query in JPA
提问by ferdinand
i have problem i want to
我有问题,我想
select name_magazine from magazine
从杂志中选择 name_magazine
and i already import all library needed
我已经导入了所有需要的库
and
和
Query q = EntityManger.createQuery ("SELECT name_magazine FROM Magazine");
List results = (List) q.getResultList ();
For(Sting s : result)
System.out.println(s);
Query q = EntityManger.createQuery("SELECT name_magazine FROM Magazine");
列表结果 = (List) q.getResultList();
For(Sting s : 结果)
System.out.println(s);
but when i run this code it's error. can someone help me? Thx
但是当我运行这段代码时,它是错误的。有人能帮我吗?谢谢
this the error when i run the program
这是我运行程序时的错误
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
线程“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) 在 org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 在 javax.swing.AbstractButton$Handler.actionPerformed( AbstractButton.java:2318) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 在 javax.swing.AbstractButton.doClick(AbstractButton.java:357) 在 javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220) 在 javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261) 在 java.awt.AWTReleased. (AWTEventMulticaster.java:272) 在 java.awt.Component.processMouseEvent(Component.java:6041) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3265) 在 java.awt.Component.processEvent(Component.java: 5806) 在 java.awt.Container.processEvent(Container.java:2058) 在 java.awt.Component.dispatchEventImpl(Component.java:4413) 在 java.awt.Container.dispatchEventImpl(Container.java:2116) 在 java。 awt.Component.dispatchEvent(Component.java:4243) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) 在 java.awt.Container.dispatchEventImpl(Container.java:2102) 在 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) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) 在 java.awt.EventDispatchThread.pumpEvents.java:EventDisp 168) 在 java.awt.EventDispatchThread。pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) 由: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 更多 原因:java.lang.IllegalArgumentException:在 EntityManager 中的 oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.createQuery(EntityManagerImpl) 中创建查询时发生异常.java:209) at tugas_rpl.Tugas_RPLView.Iseng(Tugas_RPLView.java:734) ... 34 导致:异常 [TOPLINK-8034] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007)) ): oracle.toplink.essentials.exceptions.EJBQLException 异常说明:编译查询时出错 [从杂志 m 中选择 m.Name]。未知的抽象模式类型 [杂志]。在 oracle.toplink.essentials.exceptions.EJBQLException.unknownAbstractSchemaType(EJBQLException.java:494) 在 oracle.toplink.essentials.internal.parsing.ParseTreeContext.classForSchemaName(ParseTreeContext.java:163) 在 oracle.toplink.essentials.internal. .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)在 oracle.toplink.essentials.internal.parsing.SelectGenerationContext.(SelectGenerationContext.java:88) 在 oracle.toplink.essentials.internal.parsing.ParseTree.buildContextForReadQuery(ParseTree.java:382) 在 oracle.toplink.essentials.internal。解析.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.populateQuery(EJBQLParse7Tree.java)在 oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:219) 在 oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery.java:219)在 oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:153) 在 oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.(EJBQueryImpl.java:153) 在:1 oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.(EJBQueryImpl.java:99) 在 oracle.toplink.essentials。internal.ejb.cmp3.EJBQueryImpl.(EJBQueryImpl.java:86) at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.createQuery(EntityManagerImpl.java:204) ... 35 更多
I already try Vincent Ramdhanie,Guemundur Bjarni suggestion
我已经尝试过 Vincent Ramdhanie,Guemundur Bjarni 的建议
Query q = entityManager.createQuery("Select m.name from magazine m");
List result = (List) q.getResultList();
For(Sting s : result)
System.out.print(s);
Query q = entityManager.createQuery("从杂志m中选择m.name");
列表结果 = (List) q.getResultList();
For(Sting s : 结果)
System.out.print(s);
but still error
但仍然错误
this what library & variable i use
这是我使用的库和变量
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.*;
私有 javax.persistence.EntityManager entityManager;
导入 org.jdesktop.application.Action;
导入 org.jdesktop.application.ResourceMap;
导入 org.jdesktop.application.SingleFrameApplication;
导入 org.jdesktop.application.FrameView;
导入 org.jdesktop.application.TaskMonitor;
导入 org.jdesktop.application.Task;
导入 java.awt.event.ActionEvent;
导入 java.awt.event.ActionListener;
导入 java.util.ArrayList;
导入 java.util.List;
导入 javax.swing.Timer;
导入 javax.swing.Icon;
导入 javax.swing.JDialog;
导入 javax.swing.JFrame;
导入 javax.swing.event.ListSelectionEvent;
导入 javax.swing.event.ListSelectionListener;
导入 org.jdesktop.beansbinding.AbstractBindingListener;
导入 org.jdesktop.beansbinding.Binding;
导入 org.jdesktop.beansbinding.PropertyStateEvent;
导入 javax.persistence.*;
回答by Vincent Ramdhanie
You probably should say what the error is exactly.
您可能应该说出错误究竟是什么。
However, assuming that you have an entity Magazine then the query should be:
但是,假设您有一个实体 Magazine,那么查询应该是:
select m from Magazine m
If you want all magazines.
如果你想要所有的杂志。
回答by Dan Vinton
The answer is right there in the call stack for your exception:
答案就在您的异常的调用堆栈中:
Error compiling the query [Select m.Jenis_Motor from motor m]. Unknown abstract schema type [motor].
It's not a problem with your magazine query, but another malformed query - probably a named query defined somewhere else.
这不是您的杂志查询的问题,而是另一个格式错误的查询 - 可能是在其他地方定义的命名查询。
回答by Carlos Cariello
Did you rename your class?
你重命名了你的班级吗?
The class name may differ from the name used in the named query
类名可能与命名查询中使用的名称不同
回答by Guemundur Bjarni
For this to work, you need an entity defined as such:
为此,您需要一个定义如下的实体:
@Entity
@Table(name = "magazines")
public class Magazine {
/*
* Some more attributes
*/
@Column(name = "name_magazine")
private String name;
/*
* Constructors, getters and setters
*/
}
Additionally you need a persistence.xml file pointing to your entity. If all of that is in place, this query should work and give you a list of all magazines.
此外,您需要一个指向实体的 persistence.xml 文件。如果所有这些都到位,此查询应该可以工作并为您提供所有杂志的列表。
from Magazine m
The query you specified is a projection of that, and with the entity I showed above it should be
您指定的查询是它的一个投影,我上面显示的实体应该是
select m.name from Magazine m
Hope this helps. :)
希望这可以帮助。:)
回答by karan
If You are using JPA then in Query You need to write className and object as follows
如果您使用的是 JPA 那么在 Query 您需要编写 className 和 object 如下
Query q = EntityManger.createQuery ("SELECT name_magazine e FROM Magazine e");
e is an object of Magazine class. and if you facing this exception occurred while creating a query in EntityManager Check out your persistance.xml file you need to add class in this file after the persistence-unit tag
e 是 Magazine 类的对象。如果您在 EntityManager 中创建查询时遇到此异常,请查看您的 persistance.xml 文件,您需要在该文件中的 persistence-unit 标记之后添加类
<class>PackageName.className</class>

