0

我有问题我想

从杂志中选择 name_magazine

我已经导入了所有需要的库

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

列表结果 = (List) q.getResultList ();

For(Sting s : 结果)

System.out.println(s);

但是当我运行这段代码时,它是错误的。有人能帮我吗?谢谢

这是我运行程序时的错误

209) 在 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 异常描述:编译查询时出错 [Select m.Name from magazine m]。未知的抽象模式类型 [杂志]。在 oracle.toplink.essentials.exceptions.EJBQLException.unknownAbstractSchemaType(EJBQLException.java:494) 在 oracle.toplink.essentials.internal.parsing.ParseTreeContext.classForSchemaName(ParseTreeContext.java:163) 在 oracle.toplink.essentials.internal.parsing .VariableNode.resolveClass(VariableNode.java:280) 在 oracle.toplink.essentials.internal.parsing.DotNode.resolveMapping(DotNode.java:254) 在 oracle.toplink。

我已经尝试过 Vincent Ramdhanie,Guðmundur Bjarni 的建议

查询 q = entityManager.createQuery("从杂志 m 中选择 m.name");

列表结果 = (List) q.getResultList();

For(Sting s : 结果)

System.out.print(s);

但仍然错误

这是我使用的库和变量

私有 javax.persistence.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.*;

4

5 回答 5

2

答案就在您的异常的调用堆栈中:

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

这不是您的杂志查询的问题,而是另一个格式错误的查询 - 可能是在其他地方定义的命名查询。

于 2008-11-29T17:51:55.787 回答
2

您可能应该说出错误到底是什么。

但是,假设您有一个实体杂志,那么查询应该是:

 select m from Magazine m

如果你想要所有的杂志。

于 2008-11-29T12:44:57.733 回答
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 

希望这可以帮助。:)

于 2008-11-29T12:57:12.217 回答
1

你重命名了你的班级吗?

类名可能与命名查询中使用的名称不同

于 2012-07-03T15:17:54.660 回答
0

如果您使用的是 JPA,那么在查询中您需要编写 className 和 object,如下所示

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

e 是 Magazine 类的对象。如果您在 EntityManager 中创建查询时遇到此异常,请查看您的 persistence.xml 文件,您需要在该文件中的 persistence-unit 标记之后添加类

<class>PackageName.className</class>
于 2018-02-14T05:45:04.957 回答